バッチファイルでよく使うやつ
俺メモ
フォルダ階層ごとコピー
rem 中身があるフォルダのみ
xcopy /t "コピー元フォルダ" "コピー先フォルダ"
rem 空フォルダのみ
xcopy /e "コピー元フォルダ" "コピー先フォルダ"
rem 両方
xcopy /e /t "コピー元フォルダ" "コピー先フォルダ"
rem 特定の拡張子のみコピー
for /f %a in (".\コピー元フォルダ\*.vcproj") do (xcopy /t "%a" ".\コピー先フォルダ")
空フォルダのみ削除
for /f %a in ('dir /s /b /ad | sort /r ) do (rm "%a")
標準の変数一覧
%CD% - 現在のディレクトリ文字列に展開します。
%DATE% - DATE コマンドと同じフォーマットで現在の日付に展開します。
%TIME% - TIME コマンドと同じフォーマットで現在の時刻に展開します。
%RANDOM% - 0 から 32767 の間の任意の 10 進数に展開します。
%ERRORLEVEL% - 現在の ERRORLEVEL の値に展開します。
%CMDEXTVERSION% - 現在のコマンド プロセッサ拡張機能のバージョン番号に展開します。
%CMDCMDLINE% - コマンド プロセッサを起動したオリジナル コマンド ラインに展開します。
%HIGHESTNUMANODENUMBER% - このコンピューター上の最大の NUMA ノード番号に展開します。
ファイルチェック、フォルダチェック
if exist C:\local\* (
echo ディレクトリが存在します
)
(ローカルパス、UNCパス、ネットワークドライブパスなんでも行けるらしい)
if not exist "%フォルダパス%\*" (
if exist "%フォルダパス%" (
echo ファイルが存在します。
)
)
変数の置換
set STR=ababababab
echo %STR:a=c%
cbcbcbcbcb
rem 日付の形式変更
set str=%target:~開始位置,文字数%
%date:~0,4%%date:~5,2%%date:~8,2%
yyyy/mm/mm→yyyymmddになるよ
標準出力をぶち込む(最後の一行だけ)
for /f "delims=" %a in ('%CMD%') do (set VAL=%a)
文字コード変換
rem SHIFT-JISで定義
set SHIFT-JIS=えすじす
rem UTF-8に変更
chcp 65001
rem UTF-8でリダイレクト
echo %SHIFT-JIS%>UTF-8.txt
リダイレクト
rem エラー出力のみ
コマンド 2> ファイル名
rem 標準出力とエラー出力を両方
コマンド > ファイル名 2>&1
引数全部参照やつ
%*
何個入れられるんだろう。
行数カウント
rem Linuxならwc -l
コマンド | find /c /v ""
GREP相当
コマンド | find "文字列"
コマンド | findstr /r /c:"正規表現"
検索
dir /s/b C*\*hoge*
参考したやつ
rem 中身があるフォルダのみ
xcopy /t "コピー元フォルダ" "コピー先フォルダ"
rem 空フォルダのみ
xcopy /e "コピー元フォルダ" "コピー先フォルダ"
rem 両方
xcopy /e /t "コピー元フォルダ" "コピー先フォルダ"
rem 特定の拡張子のみコピー
for /f %a in (".\コピー元フォルダ\*.vcproj") do (xcopy /t "%a" ".\コピー先フォルダ")
for /f %a in ('dir /s /b /ad | sort /r ) do (rm "%a")
%CD% - 現在のディレクトリ文字列に展開します。
%DATE% - DATE コマンドと同じフォーマットで現在の日付に展開します。
%TIME% - TIME コマンドと同じフォーマットで現在の時刻に展開します。
%RANDOM% - 0 から 32767 の間の任意の 10 進数に展開します。
%ERRORLEVEL% - 現在の ERRORLEVEL の値に展開します。
%CMDEXTVERSION% - 現在のコマンド プロセッサ拡張機能のバージョン番号に展開します。
%CMDCMDLINE% - コマンド プロセッサを起動したオリジナル コマンド ラインに展開します。
%HIGHESTNUMANODENUMBER% - このコンピューター上の最大の NUMA ノード番号に展開します。
if exist C:\local\* (
echo ディレクトリが存在します
)
(ローカルパス、UNCパス、ネットワークドライブパスなんでも行けるらしい)
if not exist "%フォルダパス%\*" (
if exist "%フォルダパス%" (
echo ファイルが存在します。
)
)
set STR=ababababab
echo %STR:a=c%
cbcbcbcbcb
rem 日付の形式変更
set str=%target:~開始位置,文字数%
%date:~0,4%%date:~5,2%%date:~8,2%
yyyy/mm/mm→yyyymmddになるよ
for /f "delims=" %a in ('%CMD%') do (set VAL=%a)
rem SHIFT-JISで定義
set SHIFT-JIS=えすじす
rem UTF-8に変更
chcp 65001
rem UTF-8でリダイレクト
echo %SHIFT-JIS%>UTF-8.txt
rem エラー出力のみ
コマンド 2> ファイル名
rem 標準出力とエラー出力を両方
コマンド > ファイル名 2>&1
%*
何個入れられるんだろう。
rem Linuxならwc -l
コマンド | find /c /v ""
コマンド | find "文字列"
コマンド | findstr /r /c:"正規表現"
dir /s/b C*\*hoge*
Author And Source
この問題について(バッチファイルでよく使うやつ), 我々は、より多くの情報をここで見つけました https://qiita.com/KeisukeTakahashi/items/ccbd37015a0dc51c9d1a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .