批處理怎樣判斷乙個txt檔案是否為空?

2021-06-12 17:24:38 字數 2802 閱讀 9993

我有個系統,會生成乙個檔案「d:\aa.txt」

這個檔案會被經常改寫,有時為空(即:0位元組),有時有內容(即:大於0位元組)

我想用批處理來判斷:若該檔案為空,則執行"a.exe";

若該檔案不為空,則執行"b.exe」

謝謝!

batman發表於 2011-3-25 11:05

[code]

@echo off

set "paths=d:\a.txt"

for %%a in ("%paths%") do (

if "%%~za" equ "0" (

start "" "完整路徑(a.exe)"

) else (

start "" "完整路徑(b.exe)"))

[/code]

zidian5發表於 2011-3-25 11:26

[b] [url= [i]batman[/i] [/b]

非常感謝,已經解決了!

dashige發表於 2011-3-25 11:35

equ "0"

哈哈。。。。

wc726842270發表於 2011-3-25 12:32

無聊用wmic寫乙個,當然不如用2l的方法好。

ps:空格真是上火,找了n久才發現[code]

@echo off

set /p #a=請指定檔案:

for %%i in (%#a%) do set #d=%%~di&set #p=%%~pi &set #n=%%~ni& set #e=%%~xi

set b=%#p:\=\\%

set c=%b:~0,-1%

set x=%#e:~1,-1%

wmic datafile where "drive='%#d%' and path='%c%' and filename='%#n%' and extension='%x%'" get filesize

pause

[/code]

hbwazxf發表於 2011-3-25 13:01

新人學習。感謝2樓的方法

crlf發表於 2011-3-25 13:08

方法很多,

方法一:

findstr .* a.txt&&a.exe||b.exe

方法二:

for %%a in (a.txt) do if %%~za==0 (a.exe) else b.exe

方法三:

cd.>tmp

fc tmp a.txt&&a.exe||b.exe

方法四:

wmic...

::詳見5樓

方法五:

vbs...

::但是我只知道有,不清楚怎麼寫

方法六:

for /f "eol=" %%a in (a.txt) do set tmp=1

if defined tmp (a.exe) else b.exe

::忽略空行

當然還可以寫出很多引申的辦法,就不一一枚舉了

dahual發表於 2011-3-25 13:31

以前不知道此用法,這下好了。:lol學習帖。[code]

另外,for 變數參照的替換已被增強。您現在可以使用下列

選項語法:

%~i          - 刪除任何引號("),擴充套件 %i

%~fi        - 將 %i 擴充套件到乙個完全合格的路徑名

%~di        - 僅將 %i 擴充套件到乙個驅動器號

%~pi        - 僅將 %i 擴充套件到乙個路徑

%~ni        - 僅將 %i 擴充套件到乙個檔名

%~xi        - 僅將 %i 擴充套件到乙個副檔名

%~si        - 擴充套件的路徑只含有短名

%~ai        - 將 %i 擴充套件到檔案的檔案屬性

%~ti        - 將 %i 擴充套件到檔案的日期/時間

%~zi        - 將 %i 擴充套件到檔案的大小

%~$path:i   - 查詢列在路徑環境變數的目錄,並將 %i 擴充套件

到找到的第乙個完全合格的名稱。如果環境變數名

未被定義,或者沒有找到檔案,此組合鍵會擴充套件到

空字串

可以組合修飾符來得到多重結果:

%~dpi       - 僅將 %i 擴充套件到乙個驅動器號和路徑

%~nxi       - 僅將 %i 擴充套件到乙個檔名和副檔名

%~fsi       - 僅將 %i 擴充套件到乙個帶有短名的完整路徑名

%~dp$path:i - 搜尋列在路徑環境變數的目錄,並將 %i 擴充套件

到找到的第乙個驅動器號和路徑。

%~ftzai     - 將 %i 擴充套件到類似輸出線路的 dir

[/code]

tmplinshi發表於 2011-3-25 16:47

[quote]方法六:

for /f "eol=" %%a in (a.txt) do set tmp=1

if defined tmp (a.exe) else b.exe

::忽略空行

[size=2][color=#999999]zm900612 發表於 2011-3-25 13:08[/color] [url=

"eol=" 會忽略以雙引號開頭的行。

頁:[1]

乙個檔案處理的批處理

目錄c dat 有三個這樣的檔案,2008a.txt,2009b.txt,2008c.txt,其中2008是代表年份,可變的,後面的檔名不可變 我想實現這樣的操作 1.把dat下面所有的檔案的年份取出來,寫到year.txt檔案中,a 2008 b 2009 c 2008 2。然後把檔名的年份去掉變...

python 建立乙個txt檔案

建立乙個txt檔案,檔名為mytxtfile,並向檔案寫入msg 注意檔案的路徑不要錯,還有檔案的格式 建立乙個txt檔案,檔名為mytxtfile,並向檔案寫入msg def text create name,msg desktop path c users administrator deskt...

BAT批處理判斷是否是資料夾,是則遍歷

先來看我們需要執行的檔案 start.bat echo 1 echo n1 if exist 1 call dir.bat 1 else file.bat 1 再來dir.bat echo 1 echo n1 echo off color 0a 指定起始資料夾 set dir 1 echo dir ...