从路径批量获取文件名
Batch get filename from path
您好,我在批处理编程方面经验不足,遇到了一个问题。我有一个 .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
for /F %%a in (error1.txt) do (
set value=%%a
FOR /F %%I IN ("!value!") DO SET MYPATHFILE=%%~nxI
)
看来您需要延迟扩展。
当前的问题是,您想在更改值的同一组括号中使用变量(周围的 For 循环)。
将 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
您好,我在批处理编程方面经验不足,遇到了一个问题。我有一个 .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
for /F %%a in (error1.txt) do (
set value=%%a
FOR /F %%I IN ("!value!") DO SET MYPATHFILE=%%~nxI
)
看来您需要延迟扩展。
当前的问题是,您想在更改值的同一组括号中使用变量(周围的 For 循环)。
将 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