2012-02-19 14 views
8

変数を文字列で連結したいと思います。バッチファイル内で変数を文字列または変数に連結する方法

7行目から11行目まで私は連結しようとしています!somevariable!文字列または%% P変数を使用します。
しかし、これは動作していないようです。

I.e.現在のフォルダにファイル0_1_en.pdfがあります。
このスクリプトはファイルの名前を最初の桁にショートカットします。

その後、私は例えば文字列で新しい変数を作成したい:
"GEN 0" where 0 is the !sPDFName!

完全なコード:

1 SETLOCAL EnableDelayedExpansion 
2 for /f "delims=" %%P in ('dir /b *.pdf') do (
3 SET "sPDFName=%%~nxP" 
4 echo "!sPDFName:~0,1!" 
5 IF "!sPDFName:~0,1!"=="1" (SET "sPDFName=!sPDFName:~0,1!") 
6 IF "!sPDFName:~0,1!"=="0" (SET "sPDFName=!sPDFName:~0,1!") 
7 SET tempStr=GEN !sPDFName! 
8 SET myvar=!myvar! %%P 
9 
10 echo "%myvar%" 
11 echo "%tempStr%" 
12 ::echo "!sPDFName!" 
13 pause 
14 for /f "delims=" %%H in ('dir /b *.html') do (
15 IF "!sPDFName:~-0!"=="!%%H:~0,1!" echo %%H 
16 ) 
17) 

答えて

8

連結作品!しかし、あなたのエコーは失敗します。

コマンドブロック(括弧)内にあるので、すべてのパーセント変数はブロックが実行される前に展開されているため、echo "%myvar%"の出力はFORループに入る前のmyvarの内容です。

しかし、あなたは正しい方法はすでに、だからあなたのコードが

SETLOCAL EnableDelayedExpansion 
for /f "delims=" %%P in ('dir /b *.pdf') do (
    SET "sPDFName=%%~nxP" 
    echo "!sPDFName:~0,1!" 
    IF "!sPDFName:~0,1!"=="1" (SET "sPDFName=!sPDFName:~0,1!") 
    IF "!sPDFName:~0,1!"=="0" (SET "sPDFName=!sPDFName:~0,1!") 
    SET tempStr=GEN !sPDFName! 
    SET myvar=!myvar! %%P 

    echo "!myvar!" 
    echo "!tempStr!" 
    ::echo "!sPDFName!" 
    pause 
    for /f "delims=" %%H in ('dir /b *.html') do (
    IF "!sPDFName:~-0!"=="!%%H:~0,1!" echo %%H 
) 
) 
+0

おかげのようになります(!付き)

遅れ拡張を使用して、これはそれを見落とすこと、私の愚かだった知っています – user1141649

関連する問題