批处理代码中的延迟扩展问题

时间:2014-01-14 19:31:51

标签: batch-file

我遇到了一个问题,我有一个完整的计算机目录列表(位于下面显示的文本文件中)。

如果目录列表包含特殊字符,例如“!或&”,则会出现此问题。当出现该问题时,将解析文件名,以便省略这些特殊字符(从而导致利用这些变量计算其他子任务的问题)。下面是代码的快照。请告知我如何继续。

请注意,文本文件中可能包含以下路径:

C:!\ Windows临时\ file.txt的 C:\的Windows \ file.txt的

这将解析为:

C:\ Windows \ temp \ file.txt(不带引号) C:\的Windows \ file.txt的


代码片段

 for /f "delims=?" %%a in (dir.txt) do (
 setlocal enabledelayedexpansion
 set filepath=%%a
 )
 call :subproc1
 )
 goto :proc2

 :subproc1
      echo !filepath!
      endlocal
      goto :eof

 :proc2 
      continue with script here

2 个答案:

答案 0 :(得分:1)

您过早地切换延迟扩展,并且不需要子例程。

for /f "delims=?" %%a in (dir.txt) do (
  set filepath=%%a
  setlocal enabledelayedexpansion
  echo !filepath!
  endlocal
)

答案 1 :(得分:0)

@echo off

setlocal enableDelayedExpansion
for /f "delims=?" %%a in (dir.txt) do (
    setlocal disableDelayedExpansion
    (echo(%%a)
    endlocal
)
endlocal

goto :proc2


:proc2 
     echo -------end

the Jeb's trick...