【.cmd】 バッチファイルスクリプト %15 【.bat】 (819レス)
1-

711: デフォルトの名無しさん [sage] 2025/05/19(月) 09:59:39.06 ID:WO8NIavg(1) AAS
@rem 金が絡むなら自己責任でどうぞ
@echo off & setlocal enabledelayedexpansion & set "b=" & set "h="
set "a=123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
set /p "b=Base58=" & set "z=%a:~0,1%" & set /a "n=1,d=0,e=58"
set "c=!b!-" & set "b=%z%!b!" & set "f=0123456789abcdef"
:1
for /L %%i in (0,1,57) do if "!a:~%%i,1!"=="!b:~-1!" set /a e=%%i
if %e%==58 (exit /b) else set /a "g%n%=e" & set "b=!b:~0,-1!"
if defined b set /a "n+=1,e=58" & goto 1
:2
set /a "b=0,e=0" & for /L %%i in (%n%,-1,1) do (
set /a "g%%i+=b*58,b=g%%i%%16,e|=g%%i/=16")
set "h=!f:~%b%,1!%h%" & set /a "d=(d+1)%%2" & if %e% neq 0 goto 2
if "%h%"=="0" (set "h=") else if %d%==1 set "h=0%h%"
:3
if "%c:~0,1%"=="%z%" set "h=00%h%" & set "c=%c:~1%" & goto 3
if defined h echo Hex=%h% & pause
712
(1): デフォルトの名無しさん [sage] 2025/05/20(火) 08:07:11.86 ID:U563OTYa(1) AAS
>>709
709(2): >>652 [sage] 2025/05/18(日) 11:16:50.22 ID:tgr6qv73(1) AAS
>>655
Base58からHexへ変換のバッチもお願い致します。
>>652でも変換できますが、得体の知れないサイトで秘密鍵入力は怖いです。
ここはネット切断しても変換できるぞ
外部リンク:appdevtools.com
713: >>709 [sage] 2025/05/20(火) 17:35:30.38 ID:g5AqyG9Y(1) AAS
皆さんありがとうございます。変換できました。
>>712
スマホで入力直前に機内モードでいけました。
714
(4): デフォルトの名無しさん [] 2025/05/26(月) 00:46:53.22 ID:sddMzjz1(1/2) AAS
>>556
556(3): デフォルトの名無しさん [sage] 2024/06/20(木) 06:56:43.32 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
かなり前の書き込みなので もう見ていないかもしれないけど
使わせてもらいました ありがとうございます
初心者なので理解するのに時間がかかってしまいましたが
これで欠点が一つ克服できました
715
(6): デフォルトの名無しさん [sage] 2025/05/26(月) 08:47:40.30 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
716: デフォルトの名無しさん [sage] 2025/05/26(月) 20:59:12.78 ID:mOG76bz3(1) AAS
>>715
何かわからんけど横からありがとう(・∀・)
717: デフォルトの名無しさん [] 2025/05/26(月) 23:38:19.16 ID:sddMzjz1(2/2) AAS
>>715
今でも改良を続けているんですね
調べてみて導入を検討してみようと思います
718
(4): 714 [] 2025/06/09(月) 23:42:00.02 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
719: デフォルトの名無しさん [sage] 2025/06/10(火) 16:46:13.85 ID:HbVriPvf(1) AAS
UNCパスに:は無い
おれの環境では試せないけど
どうなのかな
720: 714 [] 2025/06/11(水) 23:47:01.12 ID:h2Pmz4k5(1) AAS
UNCパスというのはネットワーク上のパスということですか
詳しくないのでよくわからないですけど
それがこのバッチに関係があるのでしょうか
721
(1): デフォルトの名無しさん [sage] 2025/06/12(木) 06:01:52.53 ID:KDNtxLme(1) AAS
サーバの共有していないなら関係ない。
あるいはnet useでドライブ名を割当済でも関係ない。
問題なのはエクスプローラーで直接にUNCパスで移動して
そこでD&Dしたら"%~d1"は"\\"になるのでコロンが無いので
>>556>>718では引数の分離ができない
722: 714 [] 2025/06/12(木) 23:37:30.69 ID:3VNaC5iR(1) AAS
>>721
説明ありがとうございます
UNCパスで移動中はこのバッチだと対応できないということですか
難しいですね
723: デフォルトの名無しさん [] 2025/06/13(金) 01:33:18.10 ID:QWIL1FR+(1/2) AAS
もう
@echo コマンド %1 %2 %3 %4 %5 %6 %7 %8 %9
@pause
で手を打とうよ。あとは運用。
724
(1): デフォルトの名無しさん [sage] 2025/06/13(金) 01:41:39.04 ID:Vx46a8qY(1) AAS
>>715 で問題無いようだが
725
(1): デフォルトの名無しさん [] 2025/06/13(金) 11:27:20.00 ID:QWIL1FR+(2/2) AAS
通りすがりで正直なにしてるのかわからんけど、もしかしてやりたいのはこゆこと?

@echo off
setlocal
set ARGS=
set ORIG_ARGS=%*
call :main %ORIG_ARGS: =[全角空白]%
goto :eof

:main
if x%1 == x goto :sort
set ARG=%1
set ARG=%ARG:[全角空白]= %
if not %ARG:~0,1%%ARG:~0,1% == "" set ARG="%ARG%"
set ARGS=%ARGS% %ARG%
shift
goto :main

:sort
for /F "delims=" %%F in ('dir /S/B/OD %ARGS%') do echo コマンド "%%F"
pause
726: デフォルトの名無しさん [sage] 2025/06/13(金) 17:53:07.75 ID:u+rmpblt(1) AAS
もういいからそれ
727
(1): デフォルトの名無しさん [] 2025/06/13(金) 23:37:10.32 ID:lvrE3au7(1) AAS
>>725
試してみました
パスに全角スペースや半角スペースがあっても対応できるようですね
似たような方法を使ってるバッチをQiitaで見たことがあります
上手に回避できてると思いますがパスに&があると問題があります
%1 や %* では限界がある感じがするわ
728: デフォルトの名無しさん [sage] 2025/06/13(金) 23:50:46.94 ID:BURDJDsC(1) AAS
ややこしい処理は
呼び出し側で処理したいデータを環境変数にセット
BATは何もせずPythonを呼び出す
にすればすべて解決
729: デフォルトの名無しさん [sage] 2025/06/14(土) 04:23:27.36 ID:/OCzCvqy(1/2) AAS
環境変数てサイズに制限あるんで
大量のデータを渡す場合は普通にファイル渡しがいいかと。
親フォルダに半角スペースを入れてD&Dする方法もあるけど
それでも ab%cd%e.txt みたいのは化けるわけで
%* や %1 は取得時にすでに壊れてるのでどうにもならんわ
730
(2): デフォルトの名無しさん [] 2025/06/14(土) 08:25:15.70 ID:yDCgYQHw(1/4) AAS
なるほど、あれの/Cオプションの引数にはあるけれど、あれがバッチに渡さないわけね
理解したんで あれ起動時のコマンドラインを愚直にパースするとこんな感じか

@echo off
setlocal enableDelayedExpansion

set CMDLINE=!CMDCMDLINE:*cmd" ="!
set Q="
set "S= "

set i=1
set ARG=

:loop
if !CMDLINE:~%i%! == !Q! goto :pause
set c=!CMDLINE:~%i%,1!
if !c! == !Q! (
call :Q
) else if not !c! == !S! (
call :NQ
) else (
set /a i += 1
)
goto :loop

続く
731
(1): デフォルトの名無しさん [] 2025/06/14(土) 08:25:56.73 ID:yDCgYQHw(2/4) AAS
:Q
set ARG=!ARG!!c!
set /a i += 1
set c=!CMDLINE:~%i%,1!
if not !c! == !Q! goto :Q
set ARG=!ARG!!Q!
call :exec
set ARG=
set /a i += 1
goto :eof

:NQ
set ARG=!ARG!!c!
set /a i += 1
set c=!CMDLINE:~%i%,1!
if not !c! == !Q! if not !c! == !S! goto :NQ
set ARG="!ARG!"
call :exec
set ARG=
goto :eof

:exec
echo コマンド !ARG!
goto :eof

:pause
pause
732: デフォルトの名無しさん [] 2025/06/14(土) 08:41:58.61 ID:yDCgYQHw(3/4) AAS
あ、ソート忘れたけどいいよね
文字化けするならforの前にchcp 65001入れておくれ
733
(1): デフォルトの名無しさん [] 2025/06/14(土) 15:14:17.65 ID:eF2X+eHO(1) AAS
なにかおかしいと思ってたんだが
これ拡張子が.cmd のバッチファイルを想定してあるんだな
.bat だと無限ループするから変だと思った
734
(2): 外野 [sage] 2025/06/14(土) 16:09:26.74 ID:/OCzCvqy(2/2) AAS
>>718 参考に作ってみた。拡張子bat。UNCパスOK。違ってたらごめん

@echo off & set "a=%cmdcmdline:"=%"
set "a=%a:*.bat=%" & call set arg="%%a: %~d1=" "%~d1%%"
echo コマンド %arg:* =% & pause
735: デフォルトの名無しさん [] 2025/06/14(土) 16:43:38.20 ID:yDCgYQHw(4/4) AAS
>>733
そういうことなら set CMDLINE= の行を
set CMDLINE=!CMDCMDLINE:*%~x0" ="!
にすれば .cmd でも .bat でも .Cmd でも .BAT でもおけだな
1-
あと 84 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.015s