#author("2023-02-07T11:39:23+09:00","default:irrp","irrp") #author("2023-02-07T11:39:39+09:00","default:irrp","irrp") →Windowsコマンド →PowerShell他 →言語・開発環境 →Windows一般 →シェルスクリプト #contents *関連Webサイト [#ka67aca8] -gotoの使い方が悪い、などと怒られることがあるが、以下のようにしていると怒られます。 -gotoの使い方が悪い、などと怒られることがあるが、以下のようにしていると怒られます。2023.2 IF %1=="" goto ERR --こうしないといけない IF "%1"=="" goto ERR -[[Windowsのコマンドプロンプト/PowershellでANSIエスケープシーケンスを有効にする · ソフトウェアII>https://www.gavo.t.u-tokyo.ac.jp/~dsk_saito/lecture/software2/misc/misc01.html]] 2022.6 --コンピュータ\HKEY_CURRENT_USER\Console を選び、右クリックしてDWORD(32ビット)の変数を作成します。 --VirtualTerminalLevel を 1 -[[知識ゼロからのwindowsバッチファイル超入門>https://jj-blues.com/cms/]] 2021.7 -[[開発に役立つ,BATファイルの書き方・パターン集 (コマンドプロンプトの定石を体系的に学び,バッチ中級者になろう)>http://d.hatena.ne.jp/language_and_engineering/20130502/PatternsOfMSDOSorBAT]] 2013.5.3 -[[DOS/V & Windowsコマンド・プロンプト・リファレンス>http://www.fpcu.jp/dosvcmd/index.htm]] -[[バッチファイルの制御用コマンド>http://www.fpcu.jp/dosvcmd/batch.htm]] 2014.5.19 *TIPS [#ydea3c36] -ZIPをデスクトップに解凍するバッチファイル 2023.2 echo off if "%1"=="" goto ERR set ZIP_CMD=Expand-Archive -DestinationPath ('C:\Users\%USERNAME%\Desktop\log' + (Get-Date).ToString('yyyyMMdd_HHmmss_ffff')) -Path %1 call powershell -command "%ZIP_CMD%" goto END :ERR echo "please input: myunzip <zip_file_path>" :END -[[バッチファイルでCSVの文字コードを「Shift-JIS→UTF-8」に変換したい>https://teratail.com/questions/171691]] 2022.6 powershell -Command "get-content data1.csv | Set-Content -Encoding UTF8 data2.csv" または @echo off :Shift_JIS -> UTF-8 setlocal enabledelayedexpansion for %%f in (%*) do ( echo %%~ff| findstr /l /e /i ".txt .csv" if !ERRORLEVEL! equ 0 ( powershell -nop -c "&{[IO.File]::WriteAllText($args[1], [IO.File]::ReadAllText($args[0], [Text.Encoding]::GetEncoding(932)))}" \"%%~ff\" \"%%~ff.utf8%%~xf\" ) ) -UTF-8→ShiftJIS $child = Get-ChildItem .\ -File -Recurse -Include "*.csv" ForEach($file in $child){ $fileName = Split-Path $file -Leaf Get-Content -Encoding utf8 $file | Set-Content -Encoding default ($fileName) } -[[Win10起動時に仮想デスクトップ番号を指定してアプリを立ち上げる - Qiita>https://qiita.com/piyox2/items/328ca89a6e7effe58ced]] 2021 --https://github.com/eksime/VDesk -[[ファイル内の文字列を置換する>https://jj-blues.com/cms/wantto-replacestring/]] 2021.7 -[[バッチファイルのパラメータの使い方>https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx]] 2017.8.30 --基本的には↓を使う。for で1行ずつ取得→置換→書き出しをする %[置換対象文字列]:[置き換えられる文字列]=[置き換え後の文字列]% -[[バッチファイルからVBScriptを実行する>http://programming-10000.hatenadiary.jp/entry/20140516/1400233425]] 2014.5.16 cscript test.vbs C:\Dev\VBScript\read.txt //nologo rem 処理結果の判定 if %errorlevel% equ 0 ( echo [BATCHLOG]NORMAL END pause exit 0 ) else ( echo [BATCHLOG]ABNORMAL END pause exit -1 ) *バッチファイルで日付文字列を作るもうひとつのやり方 [#u366177e] for /F "tokens=1-3 delims=/ " %%a in ('date /t') do SET DT=%%a%%b%%c -コマンドラインでは %%a ではなく %a とする -date /t でスラッシュ入りの日付表示(YYYY/MM/DD)になっていることが前提 *バッチファイルなどでファイル名に日付を使う方法 [#la7af3be] -環境変数''DATE''から文字列切り出しをする。ただしこの方法はWindowsNTでは使えなかったと思う(未確認)。 実行例) lha32 a hoge_%date:~2,4%%date:~7,2%%date:~10,2%.lzh lzh\hoge.lzh -上の実行例で''hoge_20040806.lzh''みたいな名前のファイルが作られる。~ -ただし''DATE''の中身は端末によって微妙に変わることがあるようなので注意。 -[[Windowsのバッチファイル中で日付をファイル名に使用する>https://www.atmarkit.co.jp/ait/articles/0405/01/news002.html]] *DATEの出力形式の設定について [#t8b9941c] -WindowsXPで「地域と言語のオプション」で日付の短い形式を変更すると表示形式が変えられる模様。 -「yyyy/MM/dd」から「ddd yyyy/MM/dd」に変更すると echo %DATE%の出力が ''「2004/09/29」''から''「水 2004/09/29」''のように変わる