【.cmd】 バッチファイルスクリプト %15 【.bat】 (773レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
646(1): デフォルトの名無しさん [sage] 2024/12/20(金) 00:11:16.18 ID:TH9BF58b(1) AAS
>>645645(2): デフォルトの名無しさん [sage] 2024/12/19(木) 18:24:35.68 ID:9yUs11tl(1) AAS
set /pコマンドに空欄のままエンターを押すと強制終了してしまうのですがどうしたらいいでしょうか
set InputPath=%InputPath:"=% をコメントアウトすれば空欄での強制終了は回避できるのですが
今度は""で括られたパスを入力すると強制終了してしまいます
@echo off
set /p InputPath=
set InputPath=%InputPath:"=%
if "%InputPath%"=="" (
set msg=空欄だよ
) else if exist "%InputPath%\" (
set msg=フォルダだよ
) else if exist "%InputPath%" (
set msg=ファイルだよ
) else (
set msg=不明だよ
)
echo %msg%
pause
これでbatそのまま?(処理を抜き出したもので元々はループさせたりしてない?)
またpuaseを付けるところを見るにダブルクリックとかで実行?
コマンドプロンプトで複数回実行したりしてない?
まあ説明すると
入力でそのままエンターすると変数にヌル文字が入るわけじゃなくて変数の入力自体をしない
つまり、以前に定義されてた値があればそれがそのまま入ったままだし
未定義なら未定義のままとなる
ループさせるとかなら変数の初期化をするのがいい
set InputPath=
(これでInputPathは未定義となる)
if not defiend InputPath echo msg=空欄だよ
まあ未定義なら
if "%InputPath%"=="" (
set msg=空欄だよ
のままでちゃんと「空欄だよ」となるはずだから直す必要は無いけど
それと
set InputPath=%InputPath:"=% → set "InputPath=%InputPath:"=%"
としないと、入力に a&b などと入れられると問題となる
647: 645 [sage] 2024/12/20(金) 01:08:13.42 ID:byrLY/tu(1) AAS
>>646
助言ありがとうございます
set InputPath="" を @echo off 直下に追加したところ希望通りの結果が得られました
助かりました!
ちなみにダブルクリックで1回だけ実行しループ処理は入れてません。貼った構文が全てです
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.029s