2012-02-19 95 views
8

我想將一個變量與一個字符串連接起來。如何在批處理文件中連接變量與字符串或變量

在第7行到第11行,我嘗試concat!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-Loop之前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 2012-02-19 12:43:46

相關問題