从路径批量获取文件名

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