批量从路径获取文件名

时间:2016-08-31 07:23:24

标签: 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

2 个答案:

答案 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