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

603: 2024/11/09(土) 14:37:00.85 ID:A663IrvX(3/5) AAS
set mystringA="%mystringA:&=%"→set "mystringA=%mystringA:&=%"
604
(1): 2024/11/09(土) 14:43:11.36 ID:A663IrvX(4/5) AAS
あと>>581はデータを引数渡し("%s%")してるので、「"」をデータ内に入れることができない
ファイル渡しすれば確実だが、他に環境変数(s)で渡す場合を示しておく
data=new ActiveXObject("WScript.Shell").Environment("Process")("s").replace(/12=34/g,"4567");
605: 2024/11/09(土) 15:04:16.22 ID:A663IrvX(5/5) AAS
ついでに、&について
通常は使わなくても次の行に書けばいいが
閉じた環境からのデータを引渡ししたい場合などはどうしても使わなければならない
set a=1
call :sub
echo %a%
goto :eof
:sub
setlocal
set /a a+=1
endlocal&set a=%a%
goto :eof
606: 2024/11/09(土) 18:43:13.91 ID:L+GgUCLJ(3/3) AAS
>endlocal&set a=%a%
こんなキモい書き方した事ないな
そもそもsetlocalだかは弊害もあるから使わずに書く事を意識した方がいいね
このスレは安易に使いすぎてる
607: 2024/11/09(土) 19:20:02.72 ID:KYeqqNmx(1) AAS
ここはキモイ人ばっかりですから問題ないです笑
608: 2024/11/10(日) 07:08:12.44 ID:3mwMiYGo(1) AAS
遅延展開以外はsetlocalなんて滅多に使わんが他にどうしろと
609: 2024/11/10(日) 10:11:26.77 ID:zZSAaq07(1/3) AAS
setlocal enabledelayedexpansionは書く人多いけど
endlocalで閉じてる人見たこと無い
610: 2024/11/10(日) 14:06:03.62 ID:9SnRMU05(1/2) AAS
そりゃあ終了したら効果が無くなるんだから文法マニアくらいしか書かんだろう
611: 2024/11/10(日) 18:35:44.79 ID:i0Pkbsqf(1) AAS
サブルーチンでsetlocal enabledelayedexpansionを使ったら
endlocalを書かないと呼び出すたびに環境がコピーされていって
あっという間に正常に動作できなくなるさ
612: 2024/11/10(日) 19:42:53.96 ID:9SnRMU05(2/2) AAS
サブルーチンに置くというのは想定しなかったな
メインの、というかスクリプトの先頭に置く使い方しかしてないや
613: 2024/11/10(日) 20:44:53.21 ID:Hbc3IhS3(1) AAS
call先にsetlocalがあってもexit /bやgoto :eofで戻ると
変数復元されるのでendlocalは不要だが有ってもいい
やばいのはforやgotoでのループ内部にsetlocalしかないやつ
614: 2024/11/10(日) 21:35:28.96 ID:p0BF9o8N(1) AAS
>>604
ありがとう。
何時間かやってるけどうまくいかないです。
?@if (0)==(0) echo off
rem ***
:start
?set /p "ss=ss:"
?set "ss=%ss:&=%"
?set /p "savename=保存名:"
?set ss=%ss% option "%savename%"
?echo %ss%確認1
?cscript //nologo /e:jscript "%~f0" "%URL%"
rem ***for /f "tokens=*" %%i in ('cscript //nologo /e:jscript "%~f0" "%ss%"') do set ss= %%i
?echo %ss%確認2
goto :start
省15
615
(1): 2024/11/10(日) 22:06:03.40 ID:zZSAaq07(2/3) AAS
forの中の"%ss%"を削除すれば?
616
(1): 2024/11/10(日) 22:08:14.92 ID:cLh8//6O(1/2) AAS
うーんよく判らんけど
もう入力データはjscipt内でWScript.StdIn.ReadLine();からで拾ってきた方が早くね?とか
バッチはjsciptの呼び出し部分だけ残して全部jscriptでやった方が楽じゃね?とは思った
617: 2024/11/10(日) 22:19:31.51 ID:zZSAaq07(3/3) AAS
ファイル名として使っちゃダメな文字(又はデバイス名)ってのもあるので
そういうのが入力されたら別文字に変えるとか削除するとかしないとダメになるぞ
618
(1): 2024/11/10(日) 23:54:47.86 ID:cLh8//6O(2/2) AAS
上で言った楽なやつね。叩き台としてどうかな
@if (0)==(0) echo off
set ss=
:start
echo %ss%確認1
rem cscript //nologo /e:jscript "%~f0" "%ss%"
for /f "tokens=*" %%i in ('cscript //nologo /e:jscript "%~f0" "%ss%"') do set ss=%%i
echo %ss%確認2
goto :start
@end
// JScript部分
var data = "";
if (WScript.Arguments.Count() > 0) { // 渡された引数がある
data = WScript.Arguments(0);
if (data != "") { WScript.StdErr.WriteLine("渡された引数:" + data); }
省9
619
(1): 2024/11/11(月) 00:41:06.56 ID:ggA4ksL2(1/3) AAS
"%ss%"を引数につけてると
入力に"を入れられると二週目からエラーとなる
620
(1): 2024/11/11(月) 00:55:30.51 ID:ggA4ksL2(2/3) AAS
入力データから"を削除するようにしたほうがいい
ファイル名にも"は使えないから必要ないだろ
それと基本文字列を扱う場合は""で括ること
echo %ss%→echo "%ss%"
じゃないと、&|などでエラーになるし、^も消えるとかいろいろ起きる
(a^b.txtは正常なファイル名)
621
(1): 2024/11/11(月) 01:34:01.29 ID:ggA4ksL2(3/3) AAS
"%ss%"でエラーになってるのはbatでの構文解釈時なのでjscriptでの対処云々以前の問題
622
(1): 2024/11/11(月) 02:13:27.56 ID:BY3zyfqu(1) AAS
みなさんありがとう。
理想なのができたので、まず、
?をfor /f "tokens=*" %%i in ('cscript //nologo /e:jscript "%~f0" ') do set ss= %%i
>>615
ありがとう。たったこれだけだったよ

>>616,618
文字制限で入力ができなかった。
でもそういうやり方もあるんだと学べたのでありがとう

>>619,620,621
このbatの後に渡されるexeの処理に””で括っておかないとexeのほうでエラーになる
ちゃんとそこを伝えれてなかったね、ごめん
回答してくれてありがとう

これWScript.StdIn.ReadLine();をchat gptで文字制限を聞いたら?のような入力方法だったよ
とはいえ、ありがとうございました><
623
(1): 2024/11/11(月) 03:53:20.62 ID:vS/DyEQP(1) AAS
batというプログラミング初めてです。
初心者に良いサイト教えてください。
Windows 10です。
624: 2024/11/11(月) 04:28:35.50 ID:UKR+WOTm(1) AAS
>>623
www.google.co.jp
625: 2024/11/13(水) 02:26:15.40 ID:AkCTz+Wd(1) AAS
BATでこんなすごいことできるぞってのを教えてくださいハゲども
626: 2024/11/13(水) 02:26:54.33 ID:HWwn2oWP(1) AAS
>>622
すっかり忘れてたけど
"tokens=*"じゃ先頭が半角スペースやタブだと消えるし、セミコロンだとスキップされるという問題があった
バッチはクセがありすぎる
eolのデフォルトが;で、しかも"eol="だと今度は"が指定されたことになるとかウソーって言いたい

for /f delims^=^ eol^= %%i in ('cscript //nologo /e:jscript "%~f0"') do set ss=%%i
627
(5): 2024/11/14(木) 11:47:50.65 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

これだと正常に取得できません
正常にファイル名を取得できるようにするにはどう書けばいいでしょうか?
628: 2024/11/14(木) 11:50:39.07 ID:WvtXCkNi(1) AAS
他の「ふつう」の環境選ぶのがええよ
629
(1): 2024/11/14(木) 14:18:34.94 ID:q/WsLCXM(1/4) AAS
>>627
半角空白が無くて全角空白があるファイルをドロップするとファイル名はそこで分かれる
過去ログにやり方はあるけど簡単なのは親フォルダ名のどこかに半角空白を入れておく
それ以外で正常にできないといってるのならもう少し現象を説明してもらわないと
俺達はエスパーじゃないんだから
630
(1): 627 2024/11/14(木) 15:26:47.13 ID:oC8TllJp(2/5) AAS
>>629
すいません
2つのフォルダーと2つのテキストを用意し、この4つ全てを選択してコピーしたら一つしかコピーできなかったりして正常に動作しません
631: 2024/11/14(木) 15:48:05.37 ID:X91uzdxk(1) AAS
>>584 見ろ
632
(1): 2024/11/14(木) 16:15:29.07 ID:q/WsLCXM(2/4) AAS
>>630
コピーって何?
一例としてエクスプローラで複数のファイルを選択反転してbatのショートカットにD&Dしたら
選択したファイルのファイル名がクリップボードに入ってるだろ
どこにコピーする操作が加わるんだ?
633: 627 2024/11/14(木) 17:07:59.07 ID:oC8TllJp(3/5) AAS
>>632
ファイル名のコピーです
634: 2024/11/14(木) 17:19:32.22 ID:q/WsLCXM(3/4) AAS
ファイル名のコピーしたならもうbatを動かすまでもなくファイル名一覧がクリップボードに入ってるじゃん
そもそもクリップボードに入ってるものを入力するようにはそのbatはできてないじゃんか
635: 627 2024/11/14(木) 17:27:06.24 ID:oC8TllJp(4/5) AAS
そのファイル名のコピーがうまくいかないのです
636: 2024/11/14(木) 17:38:15.36 ID:q/WsLCXM(4/4) AAS
何をしたいのかちゃんと説明できないのなら付きあえないよ
そのbatは、引数に列記されたファイル(パス)名を順次入力してファイル名のみにして列記した一覧をクリップボードに入れるということをやってる
【オペレーション例】
コマンドプロンプトを立ち上げて
hoge.bat "c:\aa.txt" "c:\bb.txt" "c:\cc.txt"
と入力したら
aa.txt
bb.txt
cc.txt
とクリップボードに入る
637: 627 2024/11/14(木) 17:41:20.12 ID:oC8TllJp(5/5) AAS
わかりました
失礼しました
638
(1): 2024/12/11(水) 20:24:09.34 ID:y+gluRXv(1/2) AAS
BATだけでパスワード生成する方法を教えてください。
生成したパスワードをクリップボードにコピーする形でお願いします。
639: 638 2024/12/11(水) 22:00:19.62 ID:y+gluRXv(2/2) AAS
自己解決しました。
640: 2024/12/12(木) 06:59:11.94 ID:Qex7Xru+(1) AAS
パスワード生成はセキュアな乱数使った専用ツールでやれよ
641: 2024/12/17(火) 20:20:11.38 ID:0qw/aoLB(1) AAS
コンテキストメニューにregeditで追加したbatで複数のファイルを実行したら2回実行されるんだけど、これって引数2個で1回だけ実行させる方法ありますか?
642: 2024/12/18(水) 07:22:31.48 ID:alC6IUD1(1) AAS
%1 %*
みたいに書くんじゃなかったか
と超適当レス
643: 2024/12/19(木) 07:22:17.49 ID:jup1lTg9(1) AAS
BATでこんなことできるぞってのを教えてください。
644: 2024/12/19(木) 08:07:25.40 ID:i8S4J+Do(1) AAS
無限増殖.bat

@echo off
start "%~f0"
start "%~f0"
645
(2): 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=不明だよ
)
省2
646
(1): 2024/12/20(金) 00:11:16.18 ID:TH9BF58b(1) AAS
>>645
これでbatそのまま?(処理を抜き出したもので元々はループさせたりしてない?)
またpuaseを付けるところを見るにダブルクリックとかで実行?
コマンドプロンプトで複数回実行したりしてない?

まあ説明すると
入力でそのままエンターすると変数にヌル文字が入るわけじゃなくて変数の入力自体をしない
つまり、以前に定義されてた値があればそれがそのまま入ったままだし
未定義なら未定義のままとなる

ループさせるとかなら変数の初期化をするのがいい
set InputPath=
(これでInputPathは未定義となる)
if not defiend InputPath echo msg=空欄だよ
まあ未定義なら
if "%InputPath%"=="" (
set msg=空欄だよ
省4
647: 645 2024/12/20(金) 01:08:13.42 ID:byrLY/tu(1) AAS
>>646
助言ありがとうございます

set InputPath="" を @echo off 直下に追加したところ希望通りの結果が得られました
助かりました!

ちなみにダブルクリックで1回だけ実行しループ処理は入れてません。貼った構文が全てです
648
(1): 2025/01/24(金) 11:47:15.87 ID:zMaqlWh1(1) AAS
いつのころからか
cmdhome.lnk
みたいなcmd起動ショートカット作って
アイコン指定してもアイコンが反映されなくなってしまった
Win10なんだけどなんか改善方法ないんだろうか
味気なさ過ぎて悲しい
649
(1): 2025/01/25(土) 04:04:41.46 ID:ZawpPmOr(1) AAS
レガシーコンソールじゃないとアイコン反映されないっぽいな
なんで退化してしまうのか
650: 2025/01/26(日) 10:14:52.12 ID:QXh9thRU(1) AAS
>>648=>>649なんだろうけど
ちょっと意味がわからんかったわ
画像付きでどうしたいのか説明してくれんかね
651: 2025/01/26(日) 14:54:43.71 ID:WMeA3DrY(1) AAS
エクスプローラー再起動で反映されない?
652
(1): 2025/01/26(日) 15:05:23.00 ID:4xEs3XpP(1) AAS
バッチでHexからBase58へ変換したい
可能ですか?

参考
learnmeabitcoin.com/technical/keys/base58/
653: 2025/01/26(日) 15:20:12.21 ID:atsgMxQf(1) AAS
Base64ならCertUtilでできるがBase58のコマンドはない
そのリンク先にRubyのコードがあるから参考にしたら
654: 2025/02/06(木) 21:17:32.84 ID:TFp3Dqlz(1) AAS
batで最も重要な構文
これさえマスターすればどんな複雑な処理も書ける

set tempfn=%temp%\%random%_%random%_%random%.txt

yourcommand "%tempfn%"
or yourcommand > "%tempfn%"

for /f %%i in (%tempfn%) do call :each "%%~i"
del "%tempfn%"
goto :eof

:each
echo eachline:[%*]
goto :eof
655
(1): 2025/02/12(水) 16:52:19.09 ID:oMyiCtXq(1) AAS
@echo off & setlocal enabledelayedexpansion & set "h=" & set "b="
set "a=123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
set /p "h=Hex=" & set "c=!h!a" & set "z=%a:~0,1%" & set /a n=0
:1
if defined h (set /a n+=1) else goto 2
set /a "d%n%=0x%h:~-6%" & set "h=%h:~0,-6%" & goto 1
:2
set /a e=0,f=0 & for /L %%i in (%n%,-1,1) do (
set /a "d%%i+=e<<24,e=d%%i%%58,f|=d%%i/=58")
set "b=!a:~%e%,1!%b%" & if %f% neq 0 goto 2
if "%b%"=="%z%" set "b="
:3
if "%c:~0,2%"=="00" set "b=%z%%b%" & set "c=%c:~2%" & goto 3
if defined b echo Base58=%b% & pause
656: 2025/02/16(日) 04:09:02.74 ID:Nn6kjJ7X(1) AAS
set
foo.exe
set
としたときにfoo.exe内で書き換えた環境変数を
呼び出し側が取り込むことってできないの?
バッチ同士ならcallで行けるけどそんな感じで
657: 2025/02/16(日) 06:41:06.81 ID:51aCbtwK(1/4) AAS
俺もよく分かってないけど、
環境変数って大本はレジストリに入ってる
で普通は各々のプロセスで環境変数のインスタンスが生成されてそれを弄ることになる
サブプロセスを生成した場合は親の環境がコピーされていてそれを弄ることになる
そうならサブプロセスが終了した後ではもう残っていないことになる
サブプロセス(foo.exe)がどこの環境変数を弄るかによる
それともレジストリを書き換えたのか?
658: 2025/02/16(日) 08:16:27.56 ID:nK83B1eq(1) AAS
プロセス終了後に弄った環境変数を取得?
そんなの簡単にできたらセキュリティーホールになりそう
659: 2025/02/16(日) 11:25:20.82 ID:51aCbtwK(2/4) AAS
すごいシステムの下層レベルだと出来る方法があるのかも知れないけど
通常はプロセスは各々独立してて他プロセスのメモリ空間は共有されない
660: 2025/02/16(日) 14:24:06.62 ID:51aCbtwK(3/4) AAS
Linuxだと子プロセスから親プロセスに引き継ぐことができるらしい
(親プロセスが子プロセス生成時に親プロセス側でsourceコマンドを実行)
が、やっぱりWindowsでは無いみたい
外部リンク:learn.microsoft.com
>既定では、子プロセスは親プロセスの環境ブロックのコピーを継承します
>プロセスの作成時に子プロセスの環境変数を変更することは、1 つのプロセスが別のプロセスの環境変数を直接変更できる唯一の方法です。 プロセスは、そのプロセスの子ではない別のプロセスの環境変数を直接変更することはできません。
661: 2025/02/16(日) 14:29:31.27 ID:51aCbtwK(4/4) AAS
なので現実的な方法としては
foo.exeで渡したい情報はファイルか標準出力で親プロセスに渡せばいいと思う
662: 2025/02/17(月) 08:27:15.30 ID:oRb3RUoY(1) AAS
無理なのか
何が何でもという事もないので
受け渡し用tempファイルでやることにするよ
サンクス
663: 2025/02/17(月) 23:32:14.20 ID:l9ByBUai(1) AAS
for %%A in(*.xlsx *.xls)←ループ処理する時に、
*.xlsと*.xlsxを指定したら.xlsxは2回実行されてしまう。
*.xlsだけ指定すると1回だけ実行される。

含むではなくて、*.xlsで終わるか*.xlsxで終わるものを指定する検索はどうしたら出来ますか?
664: 2025/02/18(火) 00:40:03.94 ID:iDsz3WKD(1) AAS
findstrで自己解決しそう、ありがとう兄妹ノシ
665
(1): 2025/02/18(火) 17:36:17.24 ID:GcWP7NNv(1) AAS
for %%A in (*.xls?) じゃダメなの?
.xlsaとか.xlsbなんてファイル普通ないでしょ
666: 2025/02/18(火) 17:39:49.38 ID:IbEo812m(1) AAS
>>665
*.xlsだけでも同じだぞ
DOSネームとの互換機能だぞ
667
(1): 2025/02/18(火) 18:45:22.20 ID:TLR0SIQr(1/2) AAS
dir /b|findstrよりももしかしたら遅いかもしれんが
for /f "tokens=* delims=" %%i in ('forfiles /m *.xls') do @echo %%~i
668: 2025/02/18(火) 19:16:46.03 ID:naPa9y/a(1) AAS
?は付けとけ
環境に依存する
669: 2025/02/18(火) 19:20:25.10 ID:TLR0SIQr(2/2) AAS
要件とは別に.xlsと.xlsxとを区別するものを上げただけ
あとはよろしく
670: 2025/02/20(木) 00:56:47.67 ID:OIbQhS2Y(1) AAS
みんなありがとう
後ろに?は全然思いつかなかった。
因みにfindstrは挫折した。

>>667
これは難しくて分からんからもうちょっと調べてくる㌧
671: 2025/02/24(月) 09:10:00.84 ID:c2/p8Qwq(1) AAS
フォルダの中に
ファイル名にシングルクォートが入ってるファイルが複数あって
シングルクォートだけ一気に削除する簡単な方法ない?
ファイルの削除じゃなくて
672: 2025/02/24(月) 09:14:41.39 ID:K9TE8hB9(1) AAS
powerqueryかな
673
(2): 2025/02/26(水) 03:08:05.14 ID:Lge+mbBz(1/4) AAS
いろいろ調べて、ファイル名の頭に更新日時を付けるバッチファイルを作りました

@ECHO OFF

:LOOP
IF "%~1" EQU "" GOTO :EOF

FOR %%F IN (%1) DO (
FOR /F "tokens=1-3 delims=/ " %%A IN ("%%~tF") DO (
REN "%~1" "%%A.%%B.%%C %%~nxF"
)
)

SHIFT
GOTO LOOP
省8
674: 2025/02/26(水) 03:14:30.37 ID:dl6vXEdA(1) AAS
echo on
675: 2025/02/26(水) 06:53:35.41 ID:u15kjvGd(1) AAS
ファイル名に点とかスペース入れる奴は絶滅した方が良いと思うの
676: 2025/02/26(水) 06:58:53.12 ID:E5xeTX8Z(1) AAS
バッチファイルってD&Dでけるの?
良いこと聞いちゃった㌧

一部ループするのが不思議。
677: 673 2025/02/26(水) 13:01:30.47 ID:Lge+mbBz(2/4) AAS
動画とバッチファイルを置いてある場所に日本語のパスが入っていたことが名前変更が出来なかった原因でした。
点とスペースを入れても大丈夫みたいでした。
上記のコードは更新日時なのですが、作成日時にしたい場合はどのような記述に変更すればいいでしょうか?
678
(1): 2025/02/26(水) 14:07:44.67 ID:FzkkoRDx(1/4) AAS
dir /tc
for /f のskip=指定
679: 673 2025/02/26(水) 16:08:26.35 ID:Lge+mbBz(3/4) AAS
AA省
680: 2025/02/26(水) 16:27:38.12 ID:FzkkoRDx(2/4) AAS
どうして未完成中にecho offするの?
echo offは完成後にしろよ
多分findstrで複数の同名のファイルにマッチしてるんだろう
つまり別のファイルの日付を拾ってる
681: 2025/02/26(水) 16:34:20.93 ID:FzkkoRDx(3/4) AAS
又はどれにもマッチしてなくてdatetimeが以前の値を保持してるか
あと
dir /tc "%%~i"
682: 2025/02/26(水) 16:47:49.35 ID:FzkkoRDx(4/4) AAS
あとD&Dでファイルの受け渡しは完全じゃないのに注意
半角空白をパスに含まないかつ全角空白を含む
c:\data\あ い.txt
こういうのだと「c:\data\あ」と「い」の2つに分かれる
683: 2025/02/26(水) 17:22:40.52 ID:Lge+mbBz(4/4) AAS
ネットにあるサンプルコードの一部分を少し変えて試してるだけなので
アドバイスを頂いているのですが全く理解できません。
今のところ 更新日時 = 作成日時 っぽいので

@ECHO ON

:LOOP
IF "%~1" EQU "" GOTO :EOF

FOR %%F IN (%1) DO (
FOR /F "tokens=1-3 delims=/ " %%A IN ("%%~tF") DO (
REN "%~1" "%%A.%%B.%%C %%~nxF"
)
)

SHIFT
GOTO LOOP
省4
684
(1): 2025/03/07(金) 21:09:01.97 ID:VgDCtbBb(1) AAS
バッチとは関係ないけど
たまにエクスプローラーで見ると更新日時のないファイルがあるけど
あれは何なんだろう
右クリックでプロパティを見てもないんだ
685: 2025/03/07(金) 21:12:50.49 ID:sd+opADM(1) AAS
>>684
アプリで消したか
違うOSからコピったか
686
(2): 2025/03/07(金) 23:48:55.40 ID:qVctmwDB(1/2) AAS
タイムスタンプが1980/01/01 8:59:59より前だと表示されないだけ
687: 2025/03/07(金) 23:56:21.18 ID:qVctmwDB(2/2) AAS
より前→以前だった
要するに、1980/01/01 9:00:00以降でないと、エクスプローラーで表示されない
688: 2025/03/08(土) 17:00:59.96 ID:oOL+XIfI(1/3) AAS
>>686が正解
689: 2025/03/08(土) 17:01:04.22 ID:oOL+XIfI(2/3) AAS
>>686が正解
690: 2025/03/08(土) 17:05:24.27 ID:oOL+XIfI(3/3) AAS
すまん連投した
1980/1/1 0:0:1以降はプロパティ表示
691: 2025/03/17(月) 15:46:18.20 ID:HZpHcb9U(1) AAS
oh my posh for cmdなんてあるんだな
さすがにwtじゃないと駄目っぽいが
692
(3): 2025/04/19(土) 00:45:06.61 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%"で一つの引数とするためには、どのようにエスケープすればいい?
693
(2): 2025/04/19(土) 08:10:38.43 ID:738SS3ZO(1/2) AAS
誰か助けて
今度会社でBOXを採用して共有フォルダを廃止するらしい
batファイルで大量のファイルの移動とかコピーとかしてたけど
ブラウザではめんどくさすぎる
batファイル風に操作する方法ありますか?
694
(1): 2025/04/19(土) 08:17:30.95 ID:pYJssLIc(1) AAS
>>693
社内で孤立してたりするの?
695
(1): 2025/04/19(土) 11:32:28.15 ID:1418i819(1/2) AAS
>>692
引数の解釈で分離するから無理
参考までに
set str=aaa "dd d"
echo echo1 %str%
echo echo2 "%str%"

call :callecho str
call :callecho "%%%%str%%%%"
goto :EOF

:callecho
echo echo3 %1
call echo echo4 %%%1%%
echo echo5 %1
call echo echo6 %1
696: 2025/04/19(土) 12:17:01.61 ID:1418i819(2/2) AAS
>>692
絶対使わない文字列に一旦変換するのが良いのかも
call :callecho "%str:"=<”>%"
goto :EOF

:callecho
set arg1=%~1
set arg1=%arg1:<”>="%
echo echo3 %arg1%
697: 2025/04/19(土) 12:35:34.33 ID:738SS3ZO(2/2) AAS
>>694
はい
698: 692 2025/04/20(日) 16:57:41.77 ID:MhuJCbcV(1) AAS
>>695
> 引数の解釈で分離するから無理
無理ですか。わかりました
699
(1): 2025/04/28(月) 22:55:03.86 ID:HidpH75d(1) AAS
コマンドプロンプト初心者です。
新部署では毎日他業者と画像やpdfのやり取りを行うのですが、そのやり取りした記録の保存を任されることになりました。
保存するデータの命名規則が「YYYYMMDD-(2桁連番)-元ファイル名.拡張子」なんですが、毎日データが数十個あって連番を手で振る作業がそろそろしんどいです。

コマンドプロンプトは使えてもbatは使えない特殊環境で、何とかforfilesとrenameを使って「元ファイル名.拡張子」を「YYYYMMDD-元ファイル名.拡張子」に一括改名するまではできるようになりました。
更に連番を振るようにするにはどうすればいいでしょうか?
なお、「元ファイル名.拡張子」の部分には法則性はまるでありません。
700
(1): 2025/04/28(月) 23:02:44.23 ID:CiQ2PPMB(1) AAS
>693
誰か教えて
701
(1): 2025/04/29(火) 11:54:34.55 ID:zLDT8DZ5(1) AAS
>>700
ファイラーでいいんでない
自動でなく手動だけど
あふなどの2画面ファイラーなら確認しながらコピーできる
702: 2025/04/29(火) 12:50:47.28 ID:wEK97Pj7(1) AAS
>>701
自動化したいです
703: 2025/04/29(火) 13:37:02.10 ID:eO8jJ9R+(1/2) AAS
batがダメならpowershellやwshもダメなのか
フリーソフトは?
704: 2025/04/29(火) 13:38:48.90 ID:ED8v3/1I(1) AAS
WSHで頑張れ
705
(1): 2025/04/29(火) 13:44:20.04 ID:eO8jJ9R+(2/2) AAS
フリーソフトがいけるならFlexible Renamerとか
1-
あと 202 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.021s