CMD从文件中获取字符串并将其设置为要在cd中使用的变量



我是批处理文件的新手,我正在尝试编写一个来做我的一部分工作(我知道懒惰的权利)

到目前为止,我有以下内容...

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

最新更新