如何在批处理文件中将变量与字符串或变量连接起来

时间:2012-02-19 12:12:47

标签: batch-file string-concatenation

我想将变量与字符串连接起来。

在第7行到第11行,我尝试连续!一些变量!用字符串或%% P变量。
但这似乎不起作用。

即。您在当前文件夹中有文件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 )

1 个答案:

答案 0 :(得分:9)

连接工作!但你的回声失败了。

当你在命令块(括号)中时,所有百分比变量在块执行之前被扩展,因此echo "%myvar%"的输出是myvar的内容,然后进入FOR-Loop。

但是你已经知道了正确的方法,使用延迟扩展(使用!

所以你的代码应该是

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
  )
)