【.cmd】 バッチファイルスクリプト %15 【.bat】 (785レス)
上下前次1-新
抽出解除 レス栞
128(3): 2023/01/03(火)15:27 ID:VP4Ca8Qj(1)調 AAS
勝手な想像だけどgoto関数かラベルの次の行がカッコになってるパターンだと思う
goto :AAA
)
とか
:AAA
)
バッチファイルは実行時に1行になって解釈されるからこういう書き方だと例えば
else (goto :AAA)
となって閉じ括弧までがラベルの一部と解釈される
簡単な回避策としては括弧の前の行にremを挿入する
171(3): 2023/02/15(水)21:53 ID:2801FI6C(1)調 AAS
dir あいう!えお.txt → 確認OK
for %%i in ( dir ”*.txt” ) do (
echo ”%%~nxi” →❶
dir ”%%~nxi” →➋
)
❶→あいうえお.txt
➋→ファイル無し
この問題(for文の内部で半角!文字が含まれたファイル名で、!が消えた名前に変わってしまう)の回避方法をご教示いただければ幸いです。
(「あいう!えお.txt」のファイル有りきで…)
329(3): 2023/06/13(火)11:28 ID:v41Gwse2(2/2)調 AAS
>>328
こんな感じでいいのでは?
:loop
set fname=%~1
shift
if not defined fname goto :eof
if "%fname:~0,2%" equ "ac" "c:\cov.exe" ~
if "%fname:~0,2%" equ "au" "c:\auro.exe" ~
timeout 1
goto :loop
又は
if "%fname:ac=%" neq "%fname%" "c:\cov.exe" ~
556(3): 2024/06/20(木)06:56 ID:oAthcLJ7(1)調 AAS
私が普段使っているドラッグアンドドロップ用バッチのサンプルです
@echo off & set a="%cmdcmdline:"=%"& set "arg="
for /f "tokens=3* delims=:" %%i in (%a%) do (set a=%%i& set b=%%j)
set "a=%a:~-1%" & set b="%b::=" "%"
for %%i in (%b%) do set b=%%i& call :x
goto y
:x
if defined arg set arg=%arg:~0,-3%"
set arg=%arg% "%a%:%b:~1%& exit /b
:y
echo コマンド %arg%
pause & exit
581(4): 2024/11/07(木)12:14 ID:9xnRXsv4(1)調 AAS
>>580
batだけでやるには大変(=の置換は無理)
変換前に1文字ずつ判定して=だったら普通使われない文字(=とか)に変えるとかしないとできない
別の方法としては別の言語でサポートしてやれば楽
@if (0)==(0) echo off
rem *** このブロックにbat内容を記述する
set s=Hello World 12=34
cscript //nologo /e:jscript "%~f0" "%s%"
rem for /f "tokens=*" %%i in ('cscript //nologo /e:jscript "%~f0" "%s%"') do set s=%%i
rem echo %s%
goto :eof
rem ***
@end
//これ以降はjscriptの処理部
var data=WScript.Arguments(0).replace(/12=34/g,"4567");
WScript.StdOut.WriteLine(data);
627(5): 2024/11/14(木)11:47 ID:oC8TllJp(1/5)調 AAS
@echo off
set T=%tmp%\tmp.txt
type nul>%T%
for %%f in (%*) do (
>>%tmp%\tmp.txt echo %%~nxf
)
type %T% | clip
これだと正常に取得できません
正常にファイル名を取得できるようにするにはどう書けばいいでしょうか?
692(3): 04/19(土)00:45 ID:pkdgLcU5(1)調 AAS
set str=aaa "dd d"
echo echo1 %str%
echo echo2 "%str%"
call :callecho "%str%"
pause
goto :EOF
:callecho
echo echo3 %1
echo echo4 %~1
echo echo5 %2
echo echo6 %~2
exit /b
二重引用符括ったものを入れ子の構造と認識していない様子
"%str%"で一つの引数とするためには、どのようにエスケープすればいい?
714(4): 05/26(月)00:46 ID:sddMzjz1(1/2)調 AAS
>>556
かなり前の書き込みなので もう見ていないかもしれないけど
使わせてもらいました ありがとうございます
初心者なので理解するのに時間がかかってしまいましたが
これで欠点が一つ克服できました
715(6): 05/26(月)08:47 ID:iONSO6k9(1)調 AAS
>>714
それでもいいけど最近シンプルなのに書き換えたので参考にどうぞ
ドラッグアンドドロップ用バッチのサンプル
@echo off & set arg=& set a="%cmdcmdline:"=" "%"
set a=%a:""=%& call :x %%a:*%~x0" =%%
echo コマンド %arg%
pause & exit
:x
set a=%1& if not defined a exit /b
if "%a:~1,1%"==" " set a=%a: =" "%
set arg=%arg% %a:""=%& shift & goto x
718(4): 714 06/09(月)23:42 ID:XIEmLRR3(1)調 AAS
>>556,715
2つを参考にして作ってみました
ドラッグ アンド ドロップ用
@echo off & set a="%cmdcmdline:"=%"
for /f "tokens=3* delims=:" %%i in (%a%) do (set a=%%i& set b=%%j)
set "a=%a:~-1%"
call :x "%a%:%%b: %a%:=" "%a%:%%"
:x
echo コマンド %*
pause & exit
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.039s