2012-02-19 65 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

相关问题