→Windowsコマンド
→PowerShell他
→言語・開発環境
→Windows一般
→シェルスクリプト
- gotoの使い方が悪い、などと怒られることがあるが、以下のようにしていると怒られます。2023.2
IF %1=="" goto ERR
- こうしないといけない
IF "%1"=="" goto ERR
TIPS†
- バッチファイルでCSVの文字コードを「Shift-JIS→UTF-8」に変換したい 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)
}
バッチファイルで日付文字列を作るもうひとつのやり方†
for /F "tokens=1-3 delims=/ " %%a in ('date /t') do SET DT=%%a%%b%%c
- コマンドラインでは %%a ではなく %a とする
- date /t でスラッシュ入りの日付表示(YYYY/MM/DD)になっていることが前提
DATEの出力形式の設定について†
- WindowsXPで「地域と言語のオプション」で日付の短い形式を変更すると表示形式が変えられる模様。
- 「yyyy/MM/dd」から「ddd yyyy/MM/dd」に変更すると echo %DATE%の出力が
「2004/09/29」から「水 2004/09/29」のように変わる