X



【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net
垢版 |
2017/03/11(土) 13:47:11.66ID:2LSSeyH1
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1424858999/

それ以前の過去スレ
%10 http://peace.2ch.net/test/read.cgi/tech/1374205515/
%9  http://toro.2ch.net/test/read.cgi/tech/1335015478/
%8  http://toro.2ch.net/test/read.cgi/tech/1315844420/
%7  http://hibari.2ch.net/test/read.cgi/tech/1298873550/
%6  http://hibari.2ch.net/test/read.cgi/tech/1277465356/
%5  http://pc12.2ch.net/test/read.cgi/tech/1242268171/
%4  http://pc12.2ch.net/test/read.cgi/tech/1229955189/
%3  http://pc11.2ch.net/test/read.cgi/tech/1217860043/
%2  http://pc12.2ch.net/test/read.cgi/tech/1197881068/
%1  http://pc11.2ch.net/test/read.cgi/tech/1178281991/
0265デフォルトの名無しさん
垢版 |
2017/11/06(月) 23:15:25.56ID:RrRem/45
バッチファイルに渡された引数が1つなのか2つなのかを判定したいのですが
どのように記述すれば良いのでしょうか?
以下ではダメでした。

if defined %2 echo 引数は2つです else echo 引数は1つです
0267デフォルトの名無しさん
垢版 |
2017/11/07(火) 07:09:27.79ID:4pg/kk0r
>>264 ありがとう

for /f "delims=" %%i in (001.txt) do (
set "a=%%i"
setlocal enabledelayedexpansion
set "a=!a:"=!"
echo.!a!>>002.txt
endlocal
)

これで空行以外は完璧かな?
0268デフォルトの名無しさん
垢版 |
2017/11/07(火) 10:05:04.55ID:1287flJj
>>262の奴で
"echo "を"echo."にするとダメなのに"echo,"にするとOKなのは何故なんだぜ?
今まで、ピリオドとカンマ、セミコロンに違いがあるとは思ってなかったから
ずっとピリオド使ってたのに
0269デフォルトの名無しさん
垢版 |
2017/11/07(火) 22:51:26.28ID:4pg/kk0r
>>267
"eol=" を指定しないと行頭文字が ; だと読み飛ばす
"delims=" を指定しないと行頭の空白が無くなる
両方同時に指定する方法はあるのか?
0271265
垢版 |
2017/11/08(水) 00:40:11.94ID:pQrS+Zxc
>>266
バッチリでした!THANKS!
0272デフォルトの名無しさん
垢版 |
2017/11/08(水) 19:40:30.74ID:VTzaN0jn
>>268
「,」「;」「=」は特別区切り文字だから。

例えば、C:\直下に「a」ってフォルダ作って

「b.cmd」
for /f %%a in ('echo,b') do echo,%%a

「b b.cmd」
echo;c %1
pause

のバッチ作成して、コマンドプロンプトで「C:\a」に移動してから

「b.cmd」を実行すると、()の中の「,」が消えた状態で表示される
「b b.cmd」を実行すると、「b.cmd」が実行される
「"b b.cmd"」を実行すると、「b b.cmd」が実行される

今度はファイル名を指定して実行で

cmd /c "C:\a\b b.cmd"
cmd /c "C:\a\b b.cmd" dを実行すると、pauseで止まるけど
cmd /c "C:\a\b b.cmd" "d"を実行すると、一瞬で終わる
cmd /c,"C:\a\b b.cmd" "d"なら動く

結構知られていないんだよね。
0273デフォルトの名無しさん
垢版 |
2017/11/08(水) 22:40:59.50ID:ZHWfUJ7q
>>270 ありがとう。完全に動作しました

そもそも eol の既定値が ; だとかヘルプに書いてないぞ
ちなみに "eol=" とすると eol が空になるのかと思ったら
今度は行頭に " があると読み飛ばすようです
何なんだ、これは。for 文のバグですかね
0274デフォルトの名無しさん
垢版 |
2017/11/09(木) 12:26:56.09ID:NEfZ8eBs
@echo off
prompt $g
set a=/?
set b=exe
set c= off
echo on
echo,%a%
echo;%a%
echo.%a%
echo.%b%
echo.%c%
echo
pause
■ このスレッドは過去ログ倉庫に格納されています