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

544: 2024/06/16(日)00:49 ID:/Fmpwzf6(1) AAS
移行できる人なら質問しないだろうよ
545: 2024/06/16(日)09:39 ID:+73AB3cR(1) AAS
PowerShellって初回使用時すごい待たされるじゃん
普段使ってなくて毎日シャットダウンするような人は使おうと思ったとき待たされてストレス受けるんだよね
546: 2024/06/16(日)11:14 ID:44t+YCVJ(1) AAS
毎日シャットダウンはするけど普段使ってないものとは
なぞなぞかな
547: 540 2024/06/16(日)22:03 ID:46K9PH7S(1) AAS
>>542
ありがとう
これはAIでは出てこない答えで感心しました

基本的にはムリっぽいという感じですかね
powershellの方が良いこともわかってはいるのですが
なにぶん物覚えが悪すぎて(´・ω・`)
548: 2024/06/17(月)00:26 ID:BTOFB8aB(1) AAS
むしろpowershellのほうがググれば沢山出てくるし書きやすいと思うけどね
549: 2024/06/17(月)09:41 ID:4dsWgq6q(1) AAS
%20とか名前付けるか

Pathのマルチバイト問題は解決困難だなあ
550: 2024/06/17(月)15:06 ID:NTaBtmxu(1) AAS
全角スペースがある場合は
フルパスの一部にでも半角スペースが入っていれば問題が生じないので、
別名として、当該フォルダに対して、シンボリックリンクなりジャンクションを半角スペースを入れた名前で作成し、
これを経由して運用すれば、とりあえず回避はできるよ

XPの頃にさんざん苦しんだのに、未だ根本的な解決がなされていないというのはモヤモヤする

環境によっては、"#"がフルパスに入るとだめというのもあるな
551: 2024/06/17(月)16:53 ID:A2yJgFtn(1) AAS
D&Dやめて日付順のリストファイルを作成したらどうかね
エクスプローラーとメモ帳で簡単にできるでしょ
552: 2024/06/17(月)23:01 ID:4L+665Jw(1/2) AAS
ドラッグアンドドロップなんてバッチ処理の発想じゃねえなw
553: 2024/06/17(月)23:01 ID:4L+665Jw(2/2) AAS
CUIをGUIの言葉で言うのは斬新すぎる
554: 2024/06/19(水)14:55 ID:baOC8PLn(1) AAS
Ruby で作ってみた。
Rubyでは半角空白はエラーになるけど、全角空白は正常に動く

デスクトップにショートカットを作って、
それに対して、ファイルをdrag & drop する

ショートカットのリンク先は、
C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/script.rb"
(@は取り除いて下さい)
省12
555: 2024/06/19(水)21:41 ID:AL0iJITw(1) AAS
バッチファイルでちまちま文字列処理するのは
C言語でちまちま文字列処理するくらい不毛だからやめとけ
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
省5
557: 2024/06/20(木)14:12 ID:6cw0yeSx(1) AAS
PowerShellて別の文字でエラーになるとか聞いたけど本当?
558
(1): 2024/07/16(火)20:58 ID:Ho7KhNQA(1) AAS
net session /delete の後の2回のY/N選択をコマンドで自動入力したいんだけど、どうやればいいの?
559: 2024/07/16(火)21:44 ID:PFxavJIe(1) AAS
>>558
応答ファイル(y+CR/LF, n+CR/LF)を作ってそれを入力とするのが常套手段だが
●Y/Nが1回の場合の例
rem ***準備
mkdir 111 2>nul
echo.>111\1.txt
rem ***応答ファイル作成
省7
560: 2024/07/17(水)06:53 ID:gLjbT8+P(1) AAS
ahk
561
(1): [age] 2024/08/12(月)12:32 ID:om8unfFL(1) AAS
初心者質問ですみません。ffmpegで一括再エンコードしたいと思ってバッチファイルを作ってみたのですがファイルにスペースが含まれるとエラーが出るようで困っています。どのように対処すればよいか、どなたか御教示お願い出来ませんでしょうか?
@echo off
cd /d %~dp0

for %%a in (*.mp4) do (

"C:\ffmpeg\bin\ffmpeg.exe" -i %%a -b:v 500k -c:a copy %%~na_500k.mp4
)
pause
562: 2024/08/12(月)14:37 ID:NAcZpcdu(1) AAS
>>561
引数として渡されるファイル名にスペースがある場合?
それなら引数を”で囲めば行けるんじゃね?
563: 2024/08/12(月)19:13 ID:N4nkPpmi(1) AAS
有難うございます。引数を""で囲んだら上手くいきました。
564: 2024/10/03(木)08:38 ID:hcouLIA5(1/2) AAS
別のスレでも質問させていただいているのですが、こちらの方が適切かと思い投稿させていただきます。

以下をbatファイルで動かそうとしてもうまく動かないのですが、どうしたら良いでしょうか。
batファイルをダブルクリックして、PowerShellを実行しています。
PowerShellのスクリプト部分は、PowerShellで動くことを確認済です。
ランダムパスワードを生成する感じです。

外部リンク:chatgpt.com
565: 2024/10/03(木)08:39 ID:hcouLIA5(2/2) AAS
リンクはこちらです
外部リンク:chatgpt.com
566: 2024/10/03(木)10:24 ID:EmzEDUtK(1) AAS
適切だと思ったらマルチポストも辞さない
567: 2024/10/04(金)07:40 ID:BveI+02d(1) AAS
以下を消したら動くようになりました。
解決です。

Param(
[int]$Length = 16,
[switch]$IncludeUppercase,
[switch]$IncludeLowercase,
[switch]$IncludeNumbers,
省2
568: 2024/10/12(土)02:43 ID:fuP8Oeol(1) AAS
iris-microという便利なソフトつかって 画面明るさ色温度かえてます
バッチファイルが2種類あって この設定をきりかえつかっています
ふたつのバッチファイルを 交互に繰り返すようなスクリプト作れますか
プロセスがのこったりしてるようでもないので難しいでしょうか?
569: 2024/10/12(土)16:51 ID:4VpnKVlz(1) AAS
バッチを順番に呼び出して先頭にgotoすれば交互になるような気がします
570: 2024/10/12(土)17:04 ID:qxhXc26A(1/2) AAS
同じbatで起動するたびにサイクリックに実行する内容を切り替えるって意味じゃないかな
何か外部にフラグみたいなもの(又は実行用にbatをコピーしてそれを呼び出す)を用意するといいんじゃないかな
同時起動の排他制御とかは個人使用ならまあ不要だろう
571: 2024/10/12(土)17:39 ID:Iy6RGAFA(1/2) AAS
状態を持たせたいならバッチの名前を変えるという荒業もできるね
572: 2024/10/12(土)18:07 ID:qxhXc26A(2/2) AAS
自分自身の名前は変えられないので別ファイルを用意
そもそもbat名を変えたら起動の度に別bat名で起動することになり元々の2つのbatのある状態と変わらんじゃん
573: 2024/10/12(土)18:14 ID:Iy6RGAFA(2/2) AAS
リネームは昔からあるハックだけどな
頭悪そう
574: 2024/10/12(土)19:31 ID:d82xRt2j(1) AAS
echo.>stat_on
if exist stat_on
とかでチェック用ファイルで分岐するのが手っ取り早い

より汎用的にやるなら
inifile.exeみたいの作るか拾うかして状態を読み書きする
575
(1): 2024/11/06(水)18:43 ID:KAHjZpf+(1) AAS
winPCで
エクスプローラから
複数ファイルを
バッチファイルにドロップして
拡張子付きファイル名のみ(パスなし)を
1行1ファイル名で
list.txtに書き出したい
省1
576: 2024/11/06(水)19:42 ID:0Z0sjFnd(1) AAS
てすと.com
577
(2): 2024/11/07(木)07:18 ID:diE3Ipx6(1) AAS
>>575
@echo off & chcp 65001
set a="%cmdcmdline:"=" "%"
call :x > list.txt & exit
:x
set a=%a:*.bat" =%
for %%i in (%a:""=%) do set a=%%i& call :y
省6
578: 2024/11/07(木)10:34 ID:sTPvG4+T(1/2) AAS
初めからコマンドプロンプトでやればいいのに
579: 2024/11/07(木)10:35 ID:sTPvG4+T(2/2) AAS
まずは特定のフォルダにファイルを集めるという発想がないんだろうな
580
(1): 2024/11/07(木)11:01 ID:5OQwBO7R(1/2) AAS
batファイルで=を含む置換えの時の方法教えてください。
入力は Hello World 12=34

@echo off
set /p mystringA=あいさつ:
set mystringB=%mystringA:12=34=4567%
echo %mystringB%

結果をこのようにしたい
省1
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
省9
582: 2024/11/07(木)12:33 ID:5OQwBO7R(2/2) AAS
>>581
サイトによって特殊文字は^だったり"を使ったりで試して出来なかった
代案をわざわざありがとうございます^^
583
(1): 2024/11/07(木)13:07 ID:sK42d9tR(1/2) AAS
>>577
神様ありがとう
なんでかわからないけど動きました

list. txtを%USERPROFILE%\Desktopに作成するにはどのようにすれば?
単純に
"%USERPROFILE\Desktop\list.txt"
に変更してもダメでした
584
(1): 2024/11/07(木)14:02 ID:DJJuXIJX(1) AAS
エクスプローラーで「パスのコピー」あるの知ってる?
windows11 なら選択後に shift+ctrl+c
バッチとかいらんだろ
585: 2024/11/07(木)16:57 ID:sK42d9tR(2/2) AAS
>>577
>583
今やったらできました
お騒がせしました

もしよろしければ
解説お願いします
586
(1): 2024/11/08(金)02:14 ID:NHkTpL6A(1/5) AAS
del /q "C:\Users\%username%\Desktop\新しいフォルダー"

これで新しいフォルダー内が消えないのですが?
587: 2024/11/08(金)03:03 ID:NHkTpL6A(2/5) AAS
日本語のファルダだとダメなんですかね?
588: 2024/11/08(金)03:07 ID:8ciHN7a8(1) AAS
文字コードが違うんじゃないですかね
589: 2024/11/08(金)03:20 ID:NHkTpL6A(3/5) AAS
なるほど理解しました
590: 2024/11/08(金)03:24 ID:NHkTpL6A(4/5) AAS
rdコマンドで親フォルダを削除しないようにするにはどう書けば良いのでしょうか?
591: 2024/11/08(金)03:36 ID:NHkTpL6A(5/5) AAS
rdコマンドで無理なら対象のフォルダ以下にあるファイルやフォルダを全て削除するものでもかまいません。
592: 2024/11/08(金)10:30 ID:n9fsiKUu(1) AAS
カレント移動すれば?
593: 2024/11/08(金)11:10 ID:PSMBlcAH(1) AAS
フォルダーごと削除してから新規作成したほうが簡単じゃね
594: 2024/11/08(金)11:27 ID:IbrHrevx(1) AAS
俺の環境だと>>586で消えるけど、/q付けないでやったらファイル削除確認メッセージが出てるか?
出てないなら中身のファイルの属性が隠しファイルになってるとか
595: 2024/11/08(金)23:02 ID:gP+dh+BC(1) AAS
del /q "新しいフォルダー\*"
for /d %%i in ("新しいフォルダー\*") do rd /s /q "%%~i"
596: 2024/11/09(土)11:03 ID:bVsLqwPh(1) AAS
cd "新しいフォルダー" && 2> nul rd /s /q .
597: 2024/11/09(土)11:39 ID:L7dYAlvM(1) AAS
>>581
またつまづきました><
入力 12&encoding=se34 56=78

これで&encoding=seを削除したくて
set "s=%s:^&=%"

で&を通したんですが
'encoding'は、内部コマンドまたは外部コマンド、
省6
598: 2024/11/09(土)13:08 ID:q8k7iVH6(1) AAS
宿題は自分で考えよう
599: 2024/11/09(土)13:14 ID:L+GgUCLJ(1/3) AAS
バッチでjscriptに渡す前に&が解釈されてるのかな?知らんけど
できないです、どうすればいいですかではなく
どこでエラーになってるか突き止めるのが先なのと
文字列処理したいなら違う言語例えばjscriptを覚えた方がよいかと
600: 2024/11/09(土)13:21 ID:L+GgUCLJ(2/3) AAS
jscriptは>>581のようにOS標準で入ってる古いjavascript
最近の構文は一部使えないがバッチよりも動作が高速で正規表現など文字列処理にも適している
他にpowershellもある
601: 2024/11/09(土)14:09 ID:A663IrvX(1/5) AAS
&はbatでの特殊記号であり、コマンドの区切りの意味がある
set a=aaaa&set b=bbb&set c=ccc
とか複数の命令を1行で書ける
他に&&,||もある
602: 2024/11/09(土)14:31 ID:A663IrvX(2/5) AAS
もしかして、set /p mystringA=あいさつ:で入力したときの話か?
なら、""で括れ
set /p "mystringA=あいさつ:"
set mystringA="%mystringA:&=%"
echo "%mystringA%"
603: 2024/11/09(土)14:37 ID:A663IrvX(3/5) AAS
set mystringA="%mystringA:&=%"→set "mystringA=%mystringA:&=%"
604
(1): 2024/11/09(土)14:43 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 ID:A663IrvX(5/5) AAS
ついでに、&について
通常は使わなくても次の行に書けばいいが
閉じた環境からのデータを引渡ししたい場合などはどうしても使わなければならない
set a=1
call :sub
echo %a%
goto :eof
省5
606: 2024/11/09(土)18:43 ID:L+GgUCLJ(3/3) AAS
>endlocal&set a=%a%
こんなキモい書き方した事ないな
そもそもsetlocalだかは弊害もあるから使わずに書く事を意識した方がいいね
このスレは安易に使いすぎてる
607: 2024/11/09(土)19:20 ID:KYeqqNmx(1) AAS
ここはキモイ人ばっかりですから問題ないです笑
608: 2024/11/10(日)07:08 ID:3mwMiYGo(1) AAS
遅延展開以外はsetlocalなんて滅多に使わんが他にどうしろと
609: 2024/11/10(日)10:11 ID:zZSAaq07(1/3) AAS
setlocal enabledelayedexpansionは書く人多いけど
endlocalで閉じてる人見たこと無い
610: 2024/11/10(日)14:06 ID:9SnRMU05(1/2) AAS
そりゃあ終了したら効果が無くなるんだから文法マニアくらいしか書かんだろう
611: 2024/11/10(日)18:35 ID:i0Pkbsqf(1) AAS
サブルーチンでsetlocal enabledelayedexpansionを使ったら
endlocalを書かないと呼び出すたびに環境がコピーされていって
あっという間に正常に動作できなくなるさ
612: 2024/11/10(日)19:42 ID:9SnRMU05(2/2) AAS
サブルーチンに置くというのは想定しなかったな
メインの、というかスクリプトの先頭に置く使い方しかしてないや
613: 2024/11/10(日)20:44 ID:Hbc3IhS3(1) AAS
call先にsetlocalがあってもexit /bやgoto :eofで戻ると
変数復元されるのでendlocalは不要だが有ってもいい
やばいのはforやgotoでのループ内部にsetlocalしかないやつ
614: 2024/11/10(日)21:35 ID:p0BF9o8N(1) AAS
>>604
ありがとう。
何時間かやってるけどうまくいかないです。
?@if (0)==(0) echo off
rem ***
:start
?set /p "ss=ss:"
省23
615
(1): 2024/11/10(日)22:06 ID:zZSAaq07(2/3) AAS
forの中の"%ss%"を削除すれば?
616
(1): 2024/11/10(日)22:08 ID:cLh8//6O(1/2) AAS
うーんよく判らんけど
もう入力データはjscipt内でWScript.StdIn.ReadLine();からで拾ってきた方が早くね?とか
バッチはjsciptの呼び出し部分だけ残して全部jscriptでやった方が楽じゃね?とは思った
617: 2024/11/10(日)22:19 ID:zZSAaq07(3/3) AAS
ファイル名として使っちゃダメな文字(又はデバイス名)ってのもあるので
そういうのが入力されたら別文字に変えるとか削除するとかしないとダメになるぞ
618
(1): 2024/11/10(日)23:54 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
省17
619
(1): 2024/11/11(月)00:41 ID:ggA4ksL2(1/3) AAS
"%ss%"を引数につけてると
入力に"を入れられると二週目からエラーとなる
620
(1): 2024/11/11(月)00:55 ID:ggA4ksL2(2/3) AAS
入力データから"を削除するようにしたほうがいい
ファイル名にも"は使えないから必要ないだろ
それと基本文字列を扱う場合は""で括ること
echo %ss%→echo "%ss%"
じゃないと、&|などでエラーになるし、^も消えるとかいろいろ起きる
(a^b.txtは正常なファイル名)
621
(1): 2024/11/11(月)01:34 ID:ggA4ksL2(3/3) AAS
"%ss%"でエラーになってるのはbatでの構文解釈時なのでjscriptでの対処云々以前の問題
622
(1): 2024/11/11(月)02:13 ID:BY3zyfqu(1) AAS
みなさんありがとう。
理想なのができたので、まず、
?をfor /f "tokens=*" %%i in ('cscript //nologo /e:jscript "%~f0" ') do set ss= %%i
>>615
ありがとう。たったこれだけだったよ

>>616,618
文字制限で入力ができなかった。
省7
623
(1): 2024/11/11(月)03:53 ID:vS/DyEQP(1) AAS
batというプログラミング初めてです。
初心者に良いサイト教えてください。
Windows 10です。
624: 2024/11/11(月)04:28 ID:UKR+WOTm(1) AAS
>>623
www.google.co.jp
1-
あと 241 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.030s