我是批处理文件的新手,我正在尝试写一个来完成我的工作(我知道懒得正确)
到目前为止,我有以下......
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
)
Run Code Online (Sandbox Code Playgroud)
Repos.txt的内容是:
60000
C:\somedir\someotherdir\
C:\a\b\c\
Run Code Online (Sandbox Code Playgroud)
基本上我希望这个脚本通过一个文件,忽略将在稍后用于延迟设置的第一行,然后提取每一行然后(理想情况下)将它传递给cd命令但是现在我只是试图获取它进入变量TgtDir.
当我运行此脚本时,C:\ result.txt中的输出是:
ECHO is on.
ECHO is on.
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
Jon*_*hop 10
您需要查看批处理文件的EnableDelayedExpansion选项.从上述链接:
使用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
)
Run Code Online (Sandbox Code Playgroud)
作为替代方案,只需%%i在内循环中使用变量,而不是创建新变量.
| 归档时间: |
|
| 查看次数: |
4071 次 |
| 最近记录: |