iT邦幫忙

0

如何用批次檔檢查檔案是否存在

如何用批次檔檢查檔案是否存在
假設路徑C:\logs下有20個資料夾內
都有一個log檔案叫做20150121.txt

如何用批次檔檢查20個資料夾內是否都有20150121.txt
如果沒有此檔案則將該資料夾名稱寫入到一個記事本做為檢查???

用if exist好像做不到?還是有甚麼特別的寫法呢?

CalvinKuo iT邦大師 7 級 ‧ 2015-01-26 17:38:07 檢舉

如何用批次檔檢查20個資料夾內是否都有20150121.txt


下面這個只能找有的:

forfiles /P C:\logs /S /M 20150121.txt /C "cmd /C echo @path"

若只是找一天之內產生的:
forfiles /P C:\logs /S /D -1 /M *.txt /C "cmd /C echo @path"


forfiles指令Windows 2003,Win7都內建....

forfiles /P C:\logs /S /M 20150121.txt /C "cmd /C echo @path"  



那如果我要將沒有20150121.txt的資料夾名稱寫到一個記事本呢?
該如何處理?

蟹老闆 iT邦大師 1 級 ‧ 2015-02-13 23:44:55 檢舉
goldvip提到:

@ECHO OFF
SET _file=20150121.txt
set _dir=c:\log

@ECHO OFF
SET _file=20150121.txt
set _dir=c:\log
上面宣告借用
For /R %_dir% %%I In ("%_file%") Do If Exist %%I (Echo 此檔存在:%%I >>LogPass.txt) Else (Echo 此檔遺失:%%~pdI >>LogError.txt)
結果:
有找到的會列在 LogPass.txt
找不到的會列在 LogError.txt

1 個回答

2
goldvip
iT邦研究生 1 級 ‧ 2015-01-27 13:36:45
最佳解答

不知道這樣寫是否有符合需求...

<pre class="c" name="code">@ECHO OFF
SET _file=20150121.txt
set _dir=c:\log
DIR %_dir% /b /a:d > folder_list.txt
FOR /F %%a IN (folder_list.txt) DO (
ECHO check %_dir%\%%a
IF NOT EXIST %_dir%\%%a\%_file% ECHO %%a %_file%檔案不存在.  >> check_result.txt
)
DEL folder_list.txt
PAUSE

我要發表回答

立即登入回答