2009年5月30日 (土)

ユーザ入力「パス取得」 サンプルコード

@ECHO OFF
SETLOCAL


:GetInput
IF DEFINED inputStr  SET inputStr=
SET /P inputStr="ファイルパスを入力して下さい:"
IF DEFINED inputStr SET inputStr=%inputStr:"=%
IF "%inputStr%"=="" GOTO GetInput
SET checkEmp=%inputStr: =%
IF DEFINED checkEmp SET checkEmp=%checkEmp: =%
IF "%checkEmp%"=="" GOTO GetInput
REM 実行処理
ECHO "%inputStr%"

:End
REM 終了処理
PAUSE
EXIT /B 0


2011/11/27
全角スペースだけの場合も問題になりそうなので、
入力チェック追加してみました(太字の箇所)

| | コメント (0) | トラックバック (0)
|

ユーザ入力「実行確認」 サンプルコード

@ECHO OFF
SETLOCAL


:GetInput
IF DEFINED inputCod  SET inputCod=
SET /P inputCod="実行してもよろしいですか?(Y/N):"
IF DEFINED inputCod SET inputCod=%inputCod:"=%
IF "%inputCod%"=="" GOTO GetInput
IF /I "%inputCod%"=="Y" GOTO Main
IF /I "%inputCod%"=="N" GOTO CancelEnd
GOTO GetInput

:CancelEnd
REM キャンセル処理
GOTO End

:Main
REM 実行処理

:End
REM 終了処理
PAUSE
EXIT /B 0




| | コメント (0) | トラックバック (0)
|

jarの解凍 サンプルコード

@ECHO OFF
SETLOCAL



SET returnCod=0

CD /D %expandPath%
CALL jar xvf %jarFilePath%
IF NOT ERRORLEVEL 1 GOTO End
REM 異常処理
SET returnCod=1

:End
REM 終了処理
EXIT /B %returnCod%


ディレクトリ%expandPath%に解凍される
※Win MEでは、CDコマンドのオプション「/D」が使用不可らしい
  →オプション「/D」がないとドライブの移動ができないので、Win MEユーザは少し工夫して下さい。。。




| | コメント (0) | トラックバック (0)
|

2009年5月24日 (日)

バッチファイルの呼び出し サンプルコード

@ECHO OFF
SETLOCAL



SET returnCod=0

CALL %batFilePath%
IF NOT ERRORLEVEL 1 GOTO End
REM 異常処理
SET returnCod=1

:End
REM 終了処理
EXIT /B %returnCod%


CALLなしで直接バッチファイルを実行すると、呼び出し元に処理が返ってこない




| | コメント (0) | トラックバック (0)
|

ファイルをコピー サンプルコード

@ECHO OFF
SETLOCAL



SET returnCod=0

REM 送り側ファイル存在チェック
IF EXIST %fromFilePath% GOTO CopyFile_pre
REM 異常処理
SET returnCod=1
GOTO End

:CopyFile_pre
REM 受け側フォルダ存在チェック
IF EXIST %toFolderPath% GOTO CopyFile_main

REM 受け側フォルダ作成
MD %toFolderPath%
IF NOT ERRORLEVEL 1 GOTO CopyFile_main
REM 異常処理
SET returnCod=%ERRORLEVEL%
GOTO End

:CopyFile_main
XCOPY %fromFilePath% %toFolderPath% /F /Y
IF NOT ERRORLEVEL 1 GOTO End
REM 異常処理
SET returnCod=%ERRORLEVEL%

:End
REM 終了処理
EXIT /B %returnCod%


<仕様>
■送り側のファイルが存在しない → 異常終了(戻り値=1)
■受け側のフォルダ作成失敗 → 異常終了(戻り値=%ERRORLEVEL%)
■コピー失敗 → 異常終了(戻り値=%ERRORLEVEL%)
■上記条件に該当しない → 正常終了(戻り値=0)

☆受け側のフォルダが存在しない場合は作成する
☆隠しファイルやシステムファイルはコピーしない(コピーする:/H)
☆読み取り専用の「属性」はコピーしない(コピーする:/K)
☆読み取り専用ファイルは上書きコピーしない(コピーする:/R)

※読み取り専用ファイルを上書きコピーするとエラー




| | コメント (0) | トラックバック (0)
|

サブフォルダを含めてファイルをコピー サンプルコード

@ECHO OFF
SETLOCAL



SET returnCod=0

REM 送り側フォルダ存在チェック
IF EXIST %fromFolderPath% GOTO CopyFolder
REM 異常処理
SET returnCod=1
GOTO End

:CopyFolder
REM サブフォルダを含めてファイルをコピー
XCOPY %fromFolderPath% %toFolderPath% /S /E /F /I /Y
IF NOT ERRORLEVEL 1 GOTO End
REM 異常処理
SET returnCod=1

:End
REM 終了処理
EXIT /B %returnCod%


<仕様>
■送り側のフォルダが存在しない → 異常終了(戻り値=1)
■コピー失敗 → 異常終了(戻り値=1)
■送り側のフォルダが存在する、かつコピー成功 → 正常終了(戻り値=0)
☆空のフォルダはコピーする
☆隠しファイルやシステムファイルはコピーしない(コピーする:/H)
☆読み取り専用の「属性」はコピーしない(コピーする:/K)
☆読み取り専用ファイルは上書きコピーしない(コピーする:/R)

※読み取り専用ファイルを上書きコピーするとエラー
※コピーするファイルが存在しなくてもコピーとならない
※受け側のフォルダが存在しない場合は自動作成される
※送り側に指定したフォルダはコピーされない(送り側フォルダの中身がコピー対象)




| | コメント (0) | トラックバック (0)
|

2009年5月23日 (土)

フォルダ&ファイル一括削除 サンプルコード

@ECHO OFF
SETLOCAL



SET returnCod=0

REM フォルダ削除
FOR /D %%d IN (%delPath%\*) DO RD /S /Q %%d
FOR /D %%d IN (%delPath%\*) DO GOTO DelFolder_err
GOTO DelFile

:DelFolder_err
REM 異常処理
SET returnCod=1
GOTO End

:DelFile
REM ファイル削除
FOR %%f IN (%delPath%\*) DO DEL /Q %%f
FOR %%f IN (%delPath%\*) DO GOTO DelFile_err
GOTO End

:DelFile_err
REM 異常処理
SET returnCod=1

:End
REM 終了処理
EXIT /B %returnCod%


<仕様>
■フォルダ削除失敗、またはファイル削除失敗 → 異常終了(戻り値=1)
■フォルダ削除成功、かつファイル削除成功 → 正常終了(戻り値=0)
☆読み取り専用ファイルは削除しない(削除する:/F)

※読み取り専用ファイルを削除するとエラー
※削除するファイル、フォルダが存在しなくてもエラーとならない
※環境によって削除成否をERRORLEVELから取得できない?ため、存在チェックで削除成否確認している




| | コメント (0) | トラックバック (0)
|

ファイル削除 サンプルコード②

@ECHO OFF
SETLOCAL



SET returnCod=0

IF EXIST %delFilePath% DEL /Q %delFilePath%
IF NOT EXIST %delFilePath% GOTO End
REM 異常処理
SET returnCod=1

:End
REM 終了処理
EXIT /B %returnCod%


<仕様>
エラーのときだけ何か処理をするとき用
■ファイルが存在しない → 正常終了(戻り値=0)
■ファイルが存在する、かつ削除失敗 → 異常終了(戻り値=1)
■ファイルが存在する、かつ削除成功 → 正常終了(戻り値=0)
☆読み取り専用ファイルは削除しない(削除する:/F)

※読み取り専用ファイルを削除するとエラー
※環境によって削除成否をERRORLEVELから取得できない?ため、存在チェックで削除成否確認している




| | コメント (0) | トラックバック (0)
|

ファイル削除 サンプルコード①

@ECHO OFF
SETLOCAL



IF EXIST %delFilePath% DEL /Q %delFilePath%
IF EXIST %delFilePath% GOTO DelFile_err
REM 正常処理
SET returnCod=0
GOTO End

:DelFile_err
REM 異常処理
SET returnCod=1

:End
REM 終了処理
EXIT /B %returnCod%


<仕様>
エラーの有無に関わらず何か処理をするとき用
■ファイルが存在しない → 正常終了(戻り値=0)
■ファイルが存在する、かつ削除失敗 → 異常終了(戻り値=1)
■ファイルが存在する、かつ削除成功 → 正常終了(戻り値=0)
☆読み取り専用ファイルは削除しない(削除する:/F)

※読み取り専用ファイルを削除するとエラー
※環境によって削除成否をERRORLEVELから取得できない?ため、存在チェックで削除成否確認している




| | コメント (0) | トラックバック (0)
|

フォルダ削除 サンプルコード②

@ECHO OFF
SETLOCAL


SET returnCod=0

IF EXIST %delFolderPath% RD /S /Q %delFolderPath%
IF NOT EXIST %delFolderPath% GOTO End
REM 異常処理
SET returnCod=1

:End
REM 終了処理
EXIT /B %returnCod%

<仕様>
エラーのときだけ何か処理をするとき用
■フォルダが存在しない → 正常終了(戻り値=0)
■フォルダが存在する、かつ削除失敗 → 異常終了(戻り値=1)
■フォルダが存在する、かつ削除成功 → 正常終了(戻り値=0)

※環境によって削除成否をERRORLEVELから取得できない?ため、存在チェックで削除成否確認している




| | コメント (0) | トラックバック (0)
|