批处理文件 - 从目录中获取文件名并另存为变量

时间:2017-01-30 10:58:52

标签: batch-file

我正在尝试读取目录并从该目录中获取文件名。 然后我想将文件名保存为变量并回显该文件名。

以下是我正在使用的代码:

 for /F %%a in ('dir C:\Users\username\Documents\Training\Pentaho\Outputs\BatchFileOutput\ *.csv') do set FileName=%%a
 echo %FileName%

命令提示符运行时,我收到以下内容: "找不到档案 目录"

有谁知道如何解决这个问题或者我哪里出错了?

由于

1 个答案:

答案 0 :(得分:1)

更安全的做法:

@echo off
setlocal
set "yourDir=C:\Users\username\Documents\Training\Pentaho\Outputs\BatchFileOutput\"
set "yourExt=*.csv"
pushd %yourDir%
for %%a in (*.%yourExt%) do echo %%a
popd
endlocal

设置两者:您的目录和要搜索的扩展名,将目录更改为先前设置的目录,可能包括/d更改,然后对与您的扩展名匹配的所有文件运行循环并回显它们。要保存仅限最后一个,您可以使用:

...do set fileName=%%a
echo %FileName%

或者在你可以使用的循环中使用它们:

@echo off
Setlocal EnableDelayedExpansion
REM Other things done here

do (
REM Do stuff with %%a here
Set filename=%%a
echo !filename!
echo !filename:~0,6!
echo !filename:a=b!
)

如果你只想回应它们,你可以去echo %%a。如果您想要执行其他内容,如注释中所述的字符串替换或子字符串,则需要使用DelayedExpansion,如上所示。 SO上也有很多问题。

请注意,您可以获得不同的"部分"您的文件的路径。看看this answer我也总是看一看。或者,在命令行中查看for命令键入for /?的文档。