批量输出文件名到变量

时间:2018-09-04 18:57:46

标签: batch-file

我目前正在尝试使用批处理来获取特定的文件名,然后将其放入变量中,因为文件名可能会更改,但“客户端”或“ mui”部分不会更改。

这两行是我首先尝试的。使用dir搜索路径,使用/ b仅获取名称,然后使用“ client”或“ mui”过滤该名称,该方法仅用于查找名称。但是尝试将其通过管道传递到变量中是行不通的。

dir "\\server\path\here" /b | Find "client" | set Client
dir "\server\path\here" /b | Find "mui" | set MUI

因此,我尝试了一下在谷歌搜索期间发现的其他项目,但这些项目也不起作用。

FOR "tokens=*" %%a in ('DIR "\\server\path\here\"' /b) do (SET OUTPUT=%%a)
for /f "tokens=*" %%i in ('dir \\\server\path\here /b | Find client') do @echo %%i
for /f %%a in ('dir \\server\path\here /B | find "client"') do set FileCount=%%a

我在这里想念什么或做错什么了?

对于那些后来来这里的人,我最终使用了

for /f "tokens=*" %%i in ('dir \\server\path\here /b ^| Find "client"') do (Set BaseClient=%%i)

1 个答案:

答案 0 :(得分:1)

FOR "tokens=*" %%a in ('DIR "\\server\path\here\"' /b) do (SET OUTPUT=%%a)

应该有效(如果您查找唯一或最后一个文件)

for /f "tokens=*" %%i in ('dir \\server\path\here /b ^| Find "client"') do @echo %%i

您忘了引用find字符串(也许dir /b /a-d ...find /i "client"可能是个好主意),而|必须转义。

for /f %%a in ('dir \\server\path\here /B ^| find "client"') do set FileCount=%%a

文件计数?您可能想在这里dir /b /a-d ... ^| find /i /c "client"