AIと戦って、あなたの人生のリスク診断 >>

バッチファイルが苦手&初心者なもので、ご教授ください。
あるパスにあるファイルサイズが0KBであれば、バッチファイルを実行。もしそれ以外であれば、何も処理をしないというバッチファイルを作成したいのですが、よくわかりません。
ご教授ください。

A 回答 (1件)

一例ですが、以下で可能かと思います。



FOR %%I IN ("ファイルパス") DO IF %%~zI==0 CALL バッチファイル
    • good
    • 4

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q0バイトファイルの判断

Windowsのバッチ処理についての質問です。
バッチから0バイトファイルを判断し削除するというようなものを作りたいです。
例えば、
C:\TEMP内にある0バイトのファイルを全て削除
上記のようなものをif文等で判断させることは可能でしょうか?

OS:WindowsXP

以上、よろしくお願いいたします。

Aベストアンサー

追記

必ず「fcとfindがちゃんと動いている」のを確認してから実行すること。

本番の実行前に
del %1
の行を
echo %1 >> result.txt
に変更しておき、最初にいきなりファイルを消させず、消すはずのファイル一覧をresult.txtに出力させておき、result.txtに希望通りの結果がリストされたか確認しておく事。

確認して消してはいけないモノが消される対象になってないか確認し、確認してから変更した行を
del %1
に戻して、本番実行すること。

間違って消しちゃいけないファイルが消されても責任は取れないので、実行は自己責任で、バックアップを取ってから行なうこと。

QDOSプロンプトでのファイルサイズの取得

こんにちは
MS DOSプロンプトでファイルサイズの取得の仕方がわかりません。
個人的には、バッチファイルを作って、ある特定のファイルのサイズを
バイト単位で表示させたいと思っているのですが、
どうしてもうまくいきません。
どなたか教えていただけないでしょうか。
アドバイスお願いします。

Aベストアンサー

目的がよくわからないのですが、指定ファイルのサイズを表示するだけなら・・・

@ECHO OFF
SET FNAME=D:\Sample.txt
CALL :SUB %FNAME%
GOTO :EOF
:SUB
ECHO %~z1バイト
EXIT /B

※このBATは、変数FNAMEに設定したファイルのサイズを表示します。

Qwindow コマンドでファイルサイズを取得

あるファイルとあるファイルのサイズを比較して同じか異なるかで
分岐したいのですがどういった書き方をすれば
よいでしょうか?

for %%A in ("ファイル名") do if %%~zA EQU "バイト数" (goto A) else (goto chkErr)

で具体的な数字と比較できるのはわかっているのですが・・・

Aベストアンサー

そこまでわかっているのなら、あと一歩。

for %%A in ("ファイル名") do for %%B in ("ファイル名その2") do if %%~zA EQU %%~zB (goto A) else (goto chkErr)

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

Qバッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

よろしくお願い致します。

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

QコマンドプロンプトのERRORLEVELについて!

コマンドプロンプトの記述で、ERRORLEVELというのがありますが
そのERRORLEVELが、0の場合は正常終了と考えていいのでしょうか?

Aベストアンサー

>if not ERRORLEVEL 1 goto aaa
>教えていただいた上記記述なんですが、
>1じゃないということは、2~255も含まれるのではないのでしょうか?
>素朴な疑問ですいません。

if文の文法については、if /? で調べてください。

if ERRORLEVEL 1 goto aaa は、ERRORLEVEL が1以上の時にgoto aaaするという意味です。ということを#4の人が書いてるのですが・・・
従って、その否定である、
if not ERRORLEVEL 1 goto aaa は、ERRORLEVEL が1未満つまり0のときにgoto aaaします(負になることはないので)。

Qバッチファイル フォルダサイズの取得方法

お世話になっております。

WindowsXP環境にて下記のバッチファイルにて【D:\test】直下の【sample】フォルダの
サイズを調べるバッチを作成予定です。

DIRコマンドで何かしらのオプションでどこかのテキストにサイズを出力し、
それを変数に読み込む・・・も考えましたが、二度手間に思えます。

どうにかわざわざテキストファイルに出力せずに直接変数にフォルダサイズを格納する
バッチファイルは可能でしょうか?

VBSではなく、バッチファイルで実現したいのです。

ご存知の方がいましたら、ご教授願いますでしょうか?

何卒宜しくお願い致します。

Aベストアンサー

こんなの発見。
http://scripting.cocolog-nifty.com/blog/2008/11/post-588f.html

Qバッチファイルで昨日の日付を取得

すみません、どなたか教えて下さい。

バッチファイルの記述で、昨日の日付を取得する方法を教えて下さい。
今日の日付は下記のように取得しています。

rem 日時変数の取得
for /f "tokens=1-3 delims=/" %%a in ('echo %date:~-10%') do (set YYYYMMDD=%%a%%b%%c
)

Aベストアンサー

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if %mm%==05 (set mm=04&& set dd=30)
if %mm%==06 (set mm=05&& set dd=31)
if %mm%==07 (set mm=06&& set dd=30)
if %mm%==08 (set mm=07&& set dd=31)
if %mm%==09 (set mm=08&& set dd=31)
if %mm%==10 (set mm=09&& set dd=30)
if %mm%==11 (set mm=10&& set dd=31)
if %mm%==12 (set mm=11&& set dd=30)
)
echo 昨日は、%yy%年%mm%月%dd%日です。

echo.
pause
:: ----- prevdate.bat おわり -----

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if...続きを読む

QDOS コマンドの~zfの意味を教えてください。

以前、1M以上のファイルをコマンドを使って検索する、方法を教えていただきました。このコマンドで出てくる~zf の意味が分かりません。どなたか教えてください。コマンドは以下の通りです。for /R %f in ( * ) do if %~zf GTR 1000000 echo "%f",%~zf>>list.csv

Aベストアンサー

今回の場合 for /R %f in (*) do コマンドという文法で %f には任意のファイル(/Rがあるのでサブディレクトリ内も再帰的に検索)のファイル名が入ります。(前回の回答ではたまたま f を使いました)
たとえば
for /R %f in ( * ) do echo %f
とするとファイル名がずらずらと表示されます。

%~zf は %f に ~z という修飾子をつけているもので、結果的にファイル名ではなくファイルサイズに置き換えられます。
%~tf とするとファイルの日付/時刻に置き換えしますし、%~xfとするとファイルの拡張子だけに置き換えします。

for /R %f in ( * ) do echo %f %~zf %~tf %~xf

No.1さんの回答のように help for の後半に詳しい説明文があります。

Qコマンドプロンプトでファイルサイズで条件分け

コマンドプロンプトで、例えば指定したフォルダ内で100MB以下のファイルは、
削除すると言うような条件分けは出来るでしょうか?

Aベストアンサー

一例:

for %f in (*.*) do @if %~zf lss 104857600 del "%~f"


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング