【.cmd】 バッチファイルスクリプト %15 【.bat】 (819レス)
【.cmd】 バッチファイルスクリプト %15 【.bat】 http://mevius.5ch.net/test/read.cgi/tech/1663153441/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
610: デフォルトの名無しさん [sage] 2024/11/10(日) 14:06:03.62 ID:9SnRMU05 そりゃあ終了したら効果が無くなるんだから文法マニアくらいしか書かんだろう http://mevius.5ch.net/test/read.cgi/tech/1663153441/610
611: デフォルトの名無しさん [sage] 2024/11/10(日) 18:35:44.79 ID:i0Pkbsqf サブルーチンでsetlocal enabledelayedexpansionを使ったら endlocalを書かないと呼び出すたびに環境がコピーされていって あっという間に正常に動作できなくなるさ http://mevius.5ch.net/test/read.cgi/tech/1663153441/611
612: デフォルトの名無しさん [sage] 2024/11/10(日) 19:42:53.96 ID:9SnRMU05 サブルーチンに置くというのは想定しなかったな メインの、というかスクリプトの先頭に置く使い方しかしてないや http://mevius.5ch.net/test/read.cgi/tech/1663153441/612
613: デフォルトの名無しさん [sage] 2024/11/10(日) 20:44:53.21 ID:Hbc3IhS3 call先にsetlocalがあってもexit /bやgoto :eofで戻ると 変数復元されるのでendlocalは不要だが有ってもいい やばいのはforやgotoでのループ内部にsetlocalしかないやつ http://mevius.5ch.net/test/read.cgi/tech/1663153441/613
614: デフォルトの名無しさん [] 2024/11/10(日) 21:35:28.96 ID:p0BF9o8N >>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 rem *** ?@end // JScript部分 // var data = WScript.Arguments(0); ?data=new ActiveXObject("WScript.Shell").Environment("Process")("ss"); ?data = data.replace(/aaaaa/g, "bbbbb"); ?data = data.replace(/12=34/g, "56=78"); ?data = data.replace(/encoding=seg/g, ""); ?WScript.StdOut.WriteLine(data); ?WScript.Quit(); これでやると?で?〜?が無視される。 ?にvarという変数を与えても同じ。 ?をdata = WScript.Arguments(0);にすると与えた入力が途中で途切れる(実際の入力値に”が入ってるため) ?の代わりにfor文だとbatが落ちる(AppleWebKit/537.36 の使い方が誤っています。) こういうのをスラスラ書ける天才たちがうらやましい。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/614
615: デフォルトの名無しさん [sage] 2024/11/10(日) 22:06:03.40 ID:zZSAaq07 forの中の"%ss%"を削除すれば? http://mevius.5ch.net/test/read.cgi/tech/1663153441/615
616: デフォルトの名無しさん [sage] 2024/11/10(日) 22:08:14.92 ID:cLh8//6O うーんよく判らんけど もう入力データはjscipt内でWScript.StdIn.ReadLine();からで拾ってきた方が早くね?とか バッチはjsciptの呼び出し部分だけ残して全部jscriptでやった方が楽じゃね?とは思った http://mevius.5ch.net/test/read.cgi/tech/1663153441/616
617: デフォルトの名無しさん [sage] 2024/11/10(日) 22:19:31.51 ID:zZSAaq07 ファイル名として使っちゃダメな文字(又はデバイス名)ってのもあるので そういうのが入力されたら別文字に変えるとか削除するとかしないとダメになるぞ http://mevius.5ch.net/test/read.cgi/tech/1663153441/617
618: デフォルトの名無しさん [sage] 2024/11/10(日) 23:54:47.86 ID:cLh8//6O 上で言った楽なやつね。叩き台としてどうかな @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); } } WScript.StdErr.Write("ss:"); // バッチのfor入力から除外するためプロンプトをエラー出力で表示 var ss = WScript.StdIn.ReadLine(); WScript.StdErr.Write("保存名:"); data = WScript.StdIn.ReadLine(); data = data.replace(/aaaaa/g, "bbbbb"); data = data.replace(/12=34/g, "56=78"); data = data.replace(/encoding=seg/g, ""); WScript.StdOut.WriteLine(data); http://mevius.5ch.net/test/read.cgi/tech/1663153441/618
619: デフォルトの名無しさん [sage] 2024/11/11(月) 00:41:06.56 ID:ggA4ksL2 "%ss%"を引数につけてると 入力に"を入れられると二週目からエラーとなる http://mevius.5ch.net/test/read.cgi/tech/1663153441/619
620: デフォルトの名無しさん [sage] 2024/11/11(月) 00:55:30.51 ID:ggA4ksL2 入力データから"を削除するようにしたほうがいい ファイル名にも"は使えないから必要ないだろ それと基本文字列を扱う場合は""で括ること echo %ss%→echo "%ss%" じゃないと、&|などでエラーになるし、^も消えるとかいろいろ起きる (a^b.txtは正常なファイル名) http://mevius.5ch.net/test/read.cgi/tech/1663153441/620
621: デフォルトの名無しさん [sage] 2024/11/11(月) 01:34:01.29 ID:ggA4ksL2 "%ss%"でエラーになってるのはbatでの構文解釈時なのでjscriptでの対処云々以前の問題 http://mevius.5ch.net/test/read.cgi/tech/1663153441/621
622: デフォルトの名無しさん [] 2024/11/11(月) 02:13:27.56 ID:BY3zyfqu みなさんありがとう。 理想なのができたので、まず、 ?を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で文字制限を聞いたら?のような入力方法だったよ とはいえ、ありがとうございました>< http://mevius.5ch.net/test/read.cgi/tech/1663153441/622
623: デフォルトの名無しさん [] 2024/11/11(月) 03:53:20.62 ID:vS/DyEQP batというプログラミング初めてです。 初心者に良いサイト教えてください。 Windows 10です。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/623
624: デフォルトの名無しさん [sage] 2024/11/11(月) 04:28:35.50 ID:UKR+WOTm >>623 www.google.co.jp http://mevius.5ch.net/test/read.cgi/tech/1663153441/624
625: デフォルトの名無しさん [] 2024/11/13(水) 02:26:15.40 ID:AkCTz+Wd BATでこんなすごいことできるぞってのを教えてくださいハゲども http://mevius.5ch.net/test/read.cgi/tech/1663153441/625
626: デフォルトの名無しさん [sage] 2024/11/13(水) 02:26:54.33 ID:HWwn2oWP >>622 すっかり忘れてたけど "tokens=*"じゃ先頭が半角スペースやタブだと消えるし、セミコロンだとスキップされるという問題があった バッチはクセがありすぎる eolのデフォルトが;で、しかも"eol="だと今度は"が指定されたことになるとかウソーって言いたい for /f delims^=^ eol^= %%i in ('cscript //nologo /e:jscript "%~f0"') do set ss=%%i http://mevius.5ch.net/test/read.cgi/tech/1663153441/626
627: デフォルトの名無しさん [] 2024/11/14(木) 11:47:50.65 ID:oC8TllJp @echo off set T=%tmp%\tmp.txt type nul>%T% for %%f in (%*) do ( >>%tmp%\tmp.txt echo %%~nxf ) type %T% | clip これだと正常に取得できません 正常にファイル名を取得できるようにするにはどう書けばいいでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1663153441/627
628: デフォルトの名無しさん [sage] 2024/11/14(木) 11:50:39.07 ID:WvtXCkNi 他の「ふつう」の環境選ぶのがええよ http://mevius.5ch.net/test/read.cgi/tech/1663153441/628
629: デフォルトの名無しさん [sage] 2024/11/14(木) 14:18:34.94 ID:q/WsLCXM >>627 半角空白が無くて全角空白があるファイルをドロップするとファイル名はそこで分かれる 過去ログにやり方はあるけど簡単なのは親フォルダ名のどこかに半角空白を入れておく それ以外で正常にできないといってるのならもう少し現象を説明してもらわないと 俺達はエスパーじゃないんだから http://mevius.5ch.net/test/read.cgi/tech/1663153441/629
630: 627 [] 2024/11/14(木) 15:26:47.13 ID:oC8TllJp >>629 すいません 2つのフォルダーと2つのテキストを用意し、この4つ全てを選択してコピーしたら一つしかコピーできなかったりして正常に動作しません http://mevius.5ch.net/test/read.cgi/tech/1663153441/630
631: デフォルトの名無しさん [sage] 2024/11/14(木) 15:48:05.37 ID:X91uzdxk >>584 見ろ http://mevius.5ch.net/test/read.cgi/tech/1663153441/631
632: デフォルトの名無しさん [sage] 2024/11/14(木) 16:15:29.07 ID:q/WsLCXM >>630 コピーって何? 一例としてエクスプローラで複数のファイルを選択反転してbatのショートカットにD&Dしたら 選択したファイルのファイル名がクリップボードに入ってるだろ どこにコピーする操作が加わるんだ? http://mevius.5ch.net/test/read.cgi/tech/1663153441/632
633: 627 [] 2024/11/14(木) 17:07:59.07 ID:oC8TllJp >>632 ファイル名のコピーです http://mevius.5ch.net/test/read.cgi/tech/1663153441/633
634: デフォルトの名無しさん [sage] 2024/11/14(木) 17:19:32.22 ID:q/WsLCXM ファイル名のコピーしたならもうbatを動かすまでもなくファイル名一覧がクリップボードに入ってるじゃん そもそもクリップボードに入ってるものを入力するようにはそのbatはできてないじゃんか http://mevius.5ch.net/test/read.cgi/tech/1663153441/634
635: 627 [] 2024/11/14(木) 17:27:06.24 ID:oC8TllJp そのファイル名のコピーがうまくいかないのです http://mevius.5ch.net/test/read.cgi/tech/1663153441/635
636: デフォルトの名無しさん [sage] 2024/11/14(木) 17:38:15.36 ID:q/WsLCXM 何をしたいのかちゃんと説明できないのなら付きあえないよ そのbatは、引数に列記されたファイル(パス)名を順次入力してファイル名のみにして列記した一覧をクリップボードに入れるということをやってる 【オペレーション例】 コマンドプロンプトを立ち上げて hoge.bat "c:\aa.txt" "c:\bb.txt" "c:\cc.txt" と入力したら aa.txt bb.txt cc.txt とクリップボードに入る http://mevius.5ch.net/test/read.cgi/tech/1663153441/636
637: 627 [] 2024/11/14(木) 17:41:20.12 ID:oC8TllJp わかりました 失礼しました http://mevius.5ch.net/test/read.cgi/tech/1663153441/637
638: デフォルトの名無しさん [] 2024/12/11(水) 20:24:09.34 ID:y+gluRXv BATだけでパスワード生成する方法を教えてください。 生成したパスワードをクリップボードにコピーする形でお願いします。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/638
639: 638 [] 2024/12/11(水) 22:00:19.62 ID:y+gluRXv 自己解決しました。 http://mevius.5ch.net/test/read.cgi/tech/1663153441/639
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 180 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.011s