我正在编写一个脚本,它将加载一个包含CSV格式的目录/文件名的文件,然后输出找不到的文件。
这是我到目前为止所做的:
for /f "delims=, tokens=1,2,3" %i in (C:\foo.csv) do dir "Y:\%i\%j\%k" >> C:\temp\log.txt
哪一个输出。
我真正想要的是它如果找到则不记录任何内容,然后只是一行类似的错误:
File AC\0d\234csf-234wfv-423vx-23fsdfs.jpg was not found
但是现在它记录了所有内容。
我怎样才能做到这一点?
答案 0 :(得分:1)
您似乎以交互方式使用该命令,因此这是一个可直接在控制台中使用的解决方案:
for /f "delims=, tokens=1,2,3" %i in (C:\foo.csv) do dir "Y:\%i\%j\%k" >nul 2>nul || echo File "Y:\%i\%j\%k" was not found>> C:\temp\log.txt
更易读的多行版本(显然用于批处理脚本,因此%%
代替%
):
for /f "delims=, tokens=1,2,3" %%i in (C:\foo.csv) do (
dir "Y:\%%i\%%j\%%k" >nul 2>nul || echo File "Y:\%%i\%%j\%%k" was not found>> C:\temp\log.txt
)
答案 1 :(得分:0)
您必须使用if not exist
。您还应该将delims
放在最后,以便能够将空格指定为分隔符,除了逗号。
以下是您的需求:
@echo off
for /f "delims=, tokens=1,2,3" %%i in (foo.csv) do (
if not exist Y:\%%i\%%j\%%k (
echo Y:\%%i\%%j\%%k doesn't exist >> log.txt
)
)
答案 2 :(得分:-1)
尝试c:\ if /?
并研究显示的帮助,寻找存在。