您好,我在批处理编程方面没有太多经验并且遇到问题。我有一个.bat
脚本,它读取带有路径列表的文件,我想获取这些路径的文件名。我使用 cygwin 中的脚本。
我在脚本中的代码:
for /F %%a in (error1.txt) do (
set value=%%a
FOR /F %%I IN ("%value%") DO SET MYPATHFILE=%%~nxI
)
当我运行脚本%value%
为空时
error1.txt的值:
a/b/c/d/TextIWant
答案 0 :(得分:4)
您需要延迟扩展,或者您可以直接使用%% a:
for /F %%a in (error1.txt) do (
FOR /F %%I IN ("%%a") DO SET MYPATHFILE=%%~nxI
)
或
setlocal enableDelayedExpansion
for /F %%a in (error1.txt) do (
set value=%%a
FOR /F %%I IN ("!value!") DO SET MYPATHFILE=%%~nxI
)
答案 1 :(得分:4)
看起来您需要延迟扩展。
目前的问题是,你想在同一组括号中使用一个变量来改变(周围的For-Loop)中的值。
将setlocal EnableDelayedExpansion
添加到顶部的代码中,然后将%value%
更改为!value!
您可以使用以下代码自行测试问题:
@echo off
setlocal EnableDelayedExpansion
set foo=bar
For /L %%a (1,2,1) do (
set foo=foobar
echo.old value %foo%
echo.new value !foo!
)
我希望它有所帮助:)。
问候
geisterfurz007