dev/bat
*バッチファイル(BAT)とかWSLとか含むbash WSL含めたらなんでもありになってきた 2008年3月22日 [[index]] #contents **日付でバックアップ >set dt=%date% >set dtstr=%dt:~-10,4%%dt:~-5,2%%dt:~-2,2% >set fname=cad_backup_%dtstr%.7z >md %dtstr% >cd %dtstr% >7za a %fname% E:\home\users\ECAD\s_mon\PA272W **変数 >set ver=101 >echo %ver% とかすると以下の表示 >101 **EXIST >@echo off >REM >REM >REM >IF EXIST FLD1 GOTO EXITS_FLD1 >IF NOT EXIST FLD1 GOTO NOT_EXITS_FLD1 > >ECHO ここに来る事は、ほぼありえない。 >EXIT /b > >:EXITS_FLD1 >ECHO found FLD1 >EXIT /b > >:NOT_EXITS_FLD1 >ECHO not found FLD1 >EXIT /b **演算 >@echo off >set /a ans=%1-1 >echo %ans% **forでファイル処理 引数から >for /F %%i in (%1) do ( >@echo %%i >) dirで列挙 >for /F %%i in ('dir /b *.jpg') do ( >@echo %%i >) ファイルに書いたリストを処理 >FOR /F %%I IN (version.txt) DO ( > ren MAIN.BIN MAIN_%%I.BIN >) version.txt >12345 実行結果 >MAIN_12345.BIN **forで時間待ち >@echo off >@echo wait sometime >for /L %%A in (30,-1,0) do ( >ping localhost -n 2 > null >@echo %%A >) **現在のディレクトリ名だけを取得 c:\temp\dat にいるとき、datを返す >set DIRECTORY_PATH=%~dp0 >for %%i in ("%DIRECTORY_PATH:~0,-1%") do set THIS_DIRECTORY=%%~ni [[バッチファイルがあるディレクトリ名だけを取得する>https://417.run/pg/get_this_dir_bat/]] **引数変換 拡張子変更 >@echo off > >for %%f in (%*) do ( >CALL :GEN_TXT %%f >) > >goto :END > >:GEN_TXT >set TXT=%~n1.txt >bin_to_txt i=%1 f=2 s=1 > %TXT% >goto :EOF > >:END [[バッチファイルでファイルパスからファイル名や拡張子を自由に取り出す方法>http://orangeclover.hatenablog.com/entry/20101004/1286120668]] >for /? の最後に色々説明あり **起動時ネットワークドライブ再接続 ドライブとか、サーバーとか、password,usernameは任意に設定する。 >@echo off >REM ======================================================== >REM ネットワークドライブ接続 >REM ======================================================== > >REM >REM 起動時50秒待つ >REM >@echo wait 50sec >for /L %%A in (50,-1,0) do ( >ping localhost -n 2 > null >@echo %%A >) > >REM >REM 接続のループ >REM 接続に失敗した場合、10秒待ってから再度接続を行う >REM >:TRY_CONNECT >@echo try connect > >REM 10秒待つ >for /L %%A in (10,-1,0) do ( >ping localhost -n 2 > null >@echo %%A >) > >REM 接続 >@echo connect E: drive >net use E: \\server\path password /USER:username /PERSISTENT:NO > >REM 既に接続済みの場合は終了する >if ERRORLEVEL 2 goto END > >REM エラーの場合はループ() >if ERRORLEVEL 1 goto TRY_CONNECT > >:END **7zipを使う ***準備 pathを通しておく >C:\Program Files\7-Zip ***圧縮 拡張子をzipにすれば、zipで圧縮してくれる。 >7z a test.7z * 除外 除外は先に指定する xが除外,rがサブディレクトリ(リカーシブ),!がワイルドカード >SET VER=003 >7z a sample_source_ver%VER%.zip -xr!*.su -xr!*.d -xr!*.o sample_source ***解凍 >7z x test.7z **Word,Excelを比較 xdoc2txtを使う バッチファイルはこんな風に >@echo off >xdoc2txt %1 > %1.xdoc2txt.tmp >xdoc2txt %2 > %2.xdoc2txt.tmp >diff %1.xdoc2txt.tmp %2.xdoc2txt.tmp >del %1.xdoc2txt.tmp >del %2.xdoc2txt.tmp **シンボリックリンク >C:\Program Files (x86)\EAGLE-5.11.0>mklink /d projects c:\usr\test\projects 参考:[[Windows Vista/Windows Server 2008でシンボリック・リンクを作成する − @IT>http://www.atmarkit.co.jp/fwin2k/win2ktips/988symlink/symlink.html]] **DIR 隠しファイル等も表示する >dir /a サブディレクトリも表示する >dir /s **GOTO >GOTO :L1 > >L1: > **便利なコマンド(別途インストール必要、WSLならインストール不要) ***WSL sed テキストファイルの文字列置換や行削除 [[sed]] sed s/検索/置換/g filename ***WSL split テキストファイルを行単位に分割 split --lines=NUMBER filename ** WSLでエクスプローラー開いているフォルダでbash起動 パス名表示しているところに、bash入力してEnter ** WSL find 現在フォルダ以下の*.cファイル列挙 >find ./ *.c ** WSL grep bash カレントディレクトリ以下の、*.cファイルに対してxxxxを捜す >find ./ -name *.c | xargs grep -n xxxxx さらにヘッダも含める >find ./ -name *.c -or -name *.h | xargs grep -n xxxxx ** bash 引数 >echo "script=" $0 #スクリプト名 >echo "count=" $# #引数の個数 >echo "No.1=" $1 #1つ目の引数 >echo "No.2=" $2 #2つ目の引数 >echo "all=" $@ #全ての引数 [[https://atmarkit.itmedia.co.jp/ait/articles/1810/07/news001.html]] **bash if分岐 >SHOW_HELP="0" > >if [ $# = 0 ] >then >SHOW_HELP="1" >elif [ $1 = "xyz" ] >then >else >fi > >if [ $SHOW_HELP = "1" ] >exit 1 >fi **リンク [[とほほのバッチ入門>https://www.tohoho-web.com/ex/bat.html]] [[バッチファイルでファイルパスからファイル名や拡張子を自由に取り出す方法>https://orangeclover.hatenablog.com/entry/20101004/1286120668]] end.
2024-11-21 17:34:41 32400