Batch file 批处理从路径获取文件名
嗨,我在批处理编程方面没有太多经验,有一个问题。我有一个Batch file 批处理从路径获取文件名,batch-file,cygwin,Batch File,Cygwin,嗨,我在批处理编程方面没有太多经验,有一个问题。我有一个.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 您需要延
.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
您需要延迟扩展,或者您可以直接使用%%a:
for /F %%a in (error1.txt) do (
FOR /F %%I IN ("%%a") DO SET MYPATHFILE=%%~nxI
)
或
看起来您需要延迟扩展 当前的问题是,您希望在更改值的同一组括号中使用一个变量(循环的周围) 将
setlocal EnableDelayedExpansion
添加到顶部的代码中,并将%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如何从MYPATHFILE中删除最后一个字符?设置“MYPATHFILE=%MYPATHFILE:~0,-1%
,但您需要在for循环之外执行此操作。是否有可能在第二个循环中执行此操作?@仓鼠蓝-然后您需要使用delyaed扩展:设置“MYPATHFILE=!”!MYPATHFILE:~0,-1!“
@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!
)