@echo off
set out=%~dp0\FileName.txt
(for /r %~dp0 %%F in ((*System1*.txt*) | (*System2*.txt*)) do (if %%~zF GEQ 1 echo %%F)) > %out%
exit /b
我想用上面的批處理文件來查看批處理文件所在的目錄中包含某個字符串的文件,並且大小超過了0KB。Windows批處理腳本:正則表達式或語句
我遇到的問題是與OR語句。
@echo off
set out=%~dp0\FileName.txt
(for /r %~dp0 %%F in ((*System1*.txt*) | (*System2*.txt*)) do (if %%~zF GEQ 1 echo %%F)) > %out%
exit /b
我想用上面的批處理文件來查看批處理文件所在的目錄中包含某個字符串的文件,並且大小超過了0KB。Windows批處理腳本:正則表達式或語句
我遇到的問題是與OR語句。
下面的批處理文件符合您的要求:
@echo off
set out=%~dp0\FileName.txt
rem "am trying with this batch file to look at the directory the batch file is in"
(for /r "%~dp0" %%F in (*System1*.txt* *System2*.txt*) do (
rem "I want all files greater than 0kb to be written out"
if %%~zF GEQ 1 (
rem "Is there a way to just exclude this Filename.txt file?"
if "%%~nxF" neq "Filename.txt" echo %%F
)
)) > "%out%"
exit /b
但是,必須注意以下幾點:
%~dp0
)的路徑應的情況下,用引號括起來它可能包含空格。System
,只需要System1
或System2
,那麼(*System*.txt*)
通配符就足夠了。if
命令。Filename.txt
永遠比不上給予*System*.txt*
外卡,所以最後if
命令是沒有必要的。沒有進一步的細節,這是使用代碼爲基礎的可能解決方案:
@echo off
set "out=%~dp0\FileName.txt"
(for /r "%~dp0" %%F in (*System*.txt*) do if %%~zF GTR 0 echo %%F)>"%out%"
exit /b
@echo off
set "out=%~dp0FileName.txt"
(for /r "%~dp0" %%F in (*System1*.txt* *System2*.txt*) do if %%~zF GEQ 1 echo %%F) > %out%
exit /b
for
命令允許多套in
子句中的文件,因此,只是包括他們。
這一件作品,非常感謝 – dog2bert
解釋一下。所有文件都超過零字節,你想用它們做什麼? – foxidrive
Windows命令行沒有使用正則表達式的方式,因此您必須透露任務的詳細信息才能獲得適當的解決方案。 – foxidrive
我希望所有大於0kb的文件都被寫入名爲FileName.txt的文本文件。 – dog2bert