batch-file - 批处理文件 - 从目录获取文件名并保存为变量

标签 batch-file

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

这是我正在使用的代码:

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

当命令提示符运行时,我收到以下信息: “文件未找到 目录”

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

谢谢

最佳答案

更安全的方法:

@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

同时设置:您的目录和您要搜索的扩展名,将目录更改为之前设置的目录(可能包括 /drive 更改),然后对与您的扩展名匹配的所有文件运行循环,回应他们。要仅保存最后一个,您可以使用:

...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/?

关于batch-file - 批处理文件 - 从目录获取文件名并保存为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41934215/

相关文章:

windows - Windows 中最后运行的进程的 PID

python - 将批处理代码转换为 python 脚本

powershell - 如何将参数从批处理文件传递到 Powershell 脚本内的函数

batch-file - 如何使用箭头键作为批处理文件中的输入

batch-file - 验证变量是否为数字

if-statement - 计划的批处理文件备份

math - 如何在 Batch 中正确执行模数运算?

batch-file - 在 Windows 批处理文件中解析和传递特殊字符

batch-file - 执行redis命令的批处理文件

matlab - 以批处理模式运行 Matlab