最新版はこちら。 いろいろ危ない世の中になってきたので、static に生成した html での公開に切り替えました。ご了承ください。
| 先月 | 2023年10月 | 来月 | ||||
|---|---|---|---|---|---|---|
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | ||||
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.batにあった。これをコマンドプロンプトから実行して
cl.exe foo.cなどとすると foo.obj と foo.exe ができあがって実行もできる。よしよし。
foo.c(1): warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を
含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
foo.c(4): fatal error C1075: '{': 一致するトークンが見つかりませんでした
という warning が出る。これも調べたら
ということで、BOM つき NKF に変換しちゃうのが簡単ぽい。
ということで nkf -oc=UTF-8-BOM がよさそう。
#!/bin/bash
#
# WSL から実行する。WSL には nkf が必要。Windows には VS2022 Community のインストールが必要。
# 引き数に与えるサブフォルダに、「us(学籍番号)_(彼らのつけたファイル名).c」で入っている想定。
#
if [ $# -ne 1 ]; then
echo "Usage: $0 [Cfolder]";
exit 1
fi
FOLDER=$1
# BOM 付き UTF-8 に変換しつつコピー
for subc in $FOLDER/*.c; do
compc=`basename $subc | cut -d _ -f 1`.c
echo $subc $compc
nkf --oc=UTF-8-BOM "$subc" > $compc
done
# 一括コンパイル
TMPBAT=temp_$$.bat
cat << 'EOS' > ./$TMPBAT
chcp 65001
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
for %%i in (*.c) do (
cl.exe %%i
)
EOS
cmd.exe /c $TMPBAT
rm $TMPBAT
# 一括実行用の PowerShell ファイルを生成
PS1FILE=execall.ps1
echo "chcp 65001" > $PS1FILE
for exe in *.exe; do
echo "Write-Output -InputObject \"[Exec $exe]\"" >> $PS1FILE
echo "pause" >> $PS1FILE
echo ".\\$exe" >> $PS1FILE
done
wsl のシェルから実行して、nkf -W をパイプしてログをとると、一応コンパイルの状況も確認できる。
# update-locale LANG=en_US.UTF-8 LANGUAGE=en_US:enという感じで、/etc/default/locale が書き変わる。つぎのログインから反映されるそう。
sed '1s/^\xEF\xBB\xBF//' input.txt > output.txtでいける。
libreoffice --headless --convert-to pdf your_document.txtという感じで。