我是批处理文件的新手,我正在尝试编写一个来做我的一部分工作(我知道懒惰的权利)
到目前为止,我有以下内容...
SET skip=1
REM for all the directories indicated to contain core repositories
FOR /F "skip=%skip% delims=" %%i IN (C:Repos.txt) DO (
SET TgtDir =%%i
echo %TgtDir% >> C:result.txt
)
存储库.txt的内容是:
60000
C:somedirsomeotherdir
C:abc
基本上,我希望这个脚本遍历一个文件,忽略稍后将用于延迟设置的第一行,并提取每一行,然后(理想情况下)将其传递给 cd 命令,但现在我只是试图让它进入变量 TgtDir。
当我运行此脚本时,C:\result.txt 中的输出为:
ECHO is on.
ECHO is on.
有什么帮助吗?
查看批处理文件的EnableDelayedExpand选项。从上述链接:
延迟变量扩展在使用 FOR 循环时通常很有用。通常,整个 FOR 循环被计算为单个命令,即使它跨越批处理脚本的多行也是如此。
所以你的脚本最终会看起来像这样:
@echo off
setlocal enabledelayedexpansion
SET skip=1
REM for all the directories indicated to contain core repositories
FOR /F "skip=%skip% delims=" %%i IN (C:Repos.txt) DO (
SET TgtDir=%%i
echo !TgtDir! >> C:result.txt
)
作为替代方法,只需在内部循环中使用 %%i
变量,而不是创建新变量。
@echo off
setlocal enabledelayedexpansion
SET skip=1
REM for all the directories indicated to contain core repositories
FOR /F "skip=%skip% delims=" %%i IN (C:Repos.txt) DO echo %%n>>c:result.txt