20: 【.cmd】 バッチファイルスクリプト %15 【.bat】 (947)

レス数: 55

概要: 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです ※何でも無理矢理バッチでやろ...
No.1
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう

過去スレ
%14
https://mevius.5ch.net/test/read.cgi/tech/1597442426/

%13
https://mevius.2ch.net/test/read.cgi/tech/1542779527/

%12
https://mevius.2ch.net/test/read.cgi/tech/1489207631/

%11
https://echo.2ch.net/test/read.cgi/tech/1424858999/

%10
https://peace.2ch.net/test/read.cgi/tech/1374205515/

%9
https://toro.2ch.net/test/read.cgi/tech/1335015478/

%8
https://toro.2ch.net/test/read.cgi/tech/1315844420/

%7
https://hibari.2ch.net/test/read.cgi/tech/1298873550/

%6
https://hibari.2ch.net/test/read.cgi/tech/1277465356/

%5
https://pc12.2ch.net/test/read.cgi/tech/1242268171/

%4
https://pc12.2ch.net/test/read.cgi/tech/1229955189/

%3
https://pc11.2ch.net/test/read.cgi/tech/1217860043/

%2
https://pc11.2ch.net/test/read.cgi/tech/1197881068/

【.cmd】 バッチファイルスクリプト %1 【.bat】

https://pc11.2ch.net/test/read.cgi/tech/1178281991/

バッチファイルプログラミング 3.bat

https://pc11.2ch.net/test/read.cgi/tech/1148485555/

バッチファイルプログラミング 2.bat

https://pc8.2ch.net/test/read.cgi/tech/1104911889/

バッチファイルプログラミング質問スレ

https://pc5.2ch.net/test/read.cgi/tech/1040614686/
No.894
修正できました。
No.895
すいません。
修正できたと思ったのですが、無理でした。
batで素早くCopilotを起動する方法を教えてください。
ちなみにショートカットキー(Windowsキー+Cキー)だとすぐに起動します。
No.896
start shell~は内部でexplorerに解釈を丸投げする方法
バッチでそれ以上に早く呼ぶ手段は無い
No.897
わかりました。
No.898
そういうのはahkでやれ
ahkはWindowsのシェルスクリプト最強格
No.900
@echo off
"WinSCP.comのパス" ^
/command ^
"open ftps://ユーザー名:パスワード@ホスト名 -explicit" ^
"synchronize remote -delete ローカルホスト リモートホスト" ^
"exit"

こちらのbatなのですが、なぜかインデントを入れないと正常に動作しません。
インデントなしでも正常に動作する方法はありますか?
No.901
インデント(半角空白1文字でいい)がないと誤動作する場合が出てくる
行連結するには
^(キャレット)は行の最後に書き、その後ろには改行しかないこと(半角空白があるとそれも含めて連結される)
キャレットの後ろの改行は消えることになるので次の行の先頭の文字はどういう扱いになるのか
^(改行)
(次の行の先頭文字)
とあったら
^(次の行の先頭文字)
というように改行が消えてなくなるわけ
で、この場合、^の付いた(次の行の先頭文字)はエスケープした単なる文字として取り扱われることになる
「^"」は単なる文字となるわけ
とすると""の中にある半角空白で引数が分離されることになる

この特性を利用して
set LF=^


と2行分改行のみの行を記述するというテクニックが使えることになる
No.902
ただし、上で書いたようにキャレットの後ろに半角空白を置くというのはまあ止めておくこと
素直にインデントしとけ
No.903
わかりましたインデントします。
No.904
すまん
俺が間違って覚えてただけだったみたいだ
俺のレスは忘れてくれ
No.905

じゃあ引き続き回答を待ちます。
No.907
^の後には何も入れてないです。
No.908
Windows Updateの配信の最適化にある 他のデバイスからのダウンロードを許可する をオフにするbatファイルはどう書けば良いのでしょうか?
No.909
rm -Rf /
No.911
batを書けるようになりたいプログラミング初心者ですが、リファレンスではなく文法の説明が書かれた書籍ってありますか?
昔からあるものなのに、よさげな書籍が見つかりません。
batからプログラミングを始めようとする方がいないから初心者用の書籍がないのでしょうか。
他のプログラミング言語を勉強してから、batを補足的に使っている方が多い?
No.912
>>911

とほほのバッチ入門 - とほほのWWW入門

https://www.tohoho-web.com/ex/bat.html


>>batを書けるようになりたい

もしよければ以下2点について聞かせて
1. 実際に目的(解決したい課題)があってのことなのか、それとも手段が目的化しているのか
2. 他の選択肢を検討した上での判断なのか、それとも闇雲にbatを選んだのか
No.913
>>912

インフラエンジニアをしております。転職先の業務でシェルスクリプトとbatを使用しているのでできるようになってほしいと言われました。
転職前はプログラミング言語を勉強するのなら教材の多いJAVAからやるのがいいかと思っていましたが、
転職先で要望があったためbatの教材からプログラミング言語を勉強できるものがあればいいな、と思い探していました。
No.914
>>913

そういうことであるなら、まずシェルスクリプトを学んでみてはいかが?
UNIXコマンドを駆使できるようになるので、後々役に立つと思うよ
自分もシェルスクリプトを書きながら、同じようにコマンドを動かすバッチファイルを書いていたので、
その違いを頭に入れながら覚えることができたと思う
シェルスクリプトが書ければバッチファイルはコマンドラインリファレンスを読めば普通にかけるようになると思う

ただ、シェルスクリプトは教材が問題で、今何があるだろう
20年も前のことだし、今もオライリーの「詳解シェルスクリプト」は使ってる人がいるんだろうか
それと、bashなどのシェルの解説なんかも読んでおくと、思いもよらないところで潰しが効くかもしれない
No.915
ftpサーバーにバッチファイルでコピーとか移動とかできるの?
可能ならやり方教えて下さい
No.916
>>914

丁寧にありがとうございます!
「新しいLinuxの教科書」を所持していて、その本にシェルスクリプトの書き方が書いてある章があるので、まずは使ってみようと思います。
シェルスクリプトとbatができるようになったら、他のプログラミング言語も挑戦してゆきたいです。
No.918
>>917

サンクス‼
No.919
>>915

scp
No.920
>>915

「ftp バッチ処理」でggr
具体的には-sオプション
No.921
>>911

2000年代の古本を買うといい
No.922
>>916

最近の本は勧められない
素人が書いている本ばかりだから
No.923
>>916

「入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界」がいい。

bashのスクリプトの話になると変な情報ばかりあるから気をつけて。

ただのshから始めないと変な癖がつく。
No.924
call :xxx>file

という書き方があったこと
No.925
バッチはマトモな変数が無い事とマトモなエスケープが無いのが鬼門
echo on で奇妙な仕様を確認しよう
No.926
windowsネイティブだとwshのvbsのほうができることは多いな
オワコンらしいけど現状ではどのマシンでも使えるし、
いつまで使えるかが問題だ

遅くてよければwslのshell scriptというのもありだと思う
No.927
vbsは廃止路線だからwshのjsのほうが良いんじゃね?
新しい関数使えないからムカつくけど
No.928
vbs便利なのにね
No.929
wshのウンコみたいなincludeの仕組みを知ったその日以来全く使ってない
No.930
wsfならhtmlと一緒だがそんなにクソか?
No.931
windowsの共有フォルダにあるbatファイルで
オレ以外が実行したらそく終了するのってできる?
セキュリティではなくて
うっかり実行防止が目的です
No.932
>>931

実際に操作してる人物を判定するのは無理だけど、ログインユーザーを判定することは可能
No.933
if not exist k:\key.txt goto error
とか
set実行してみてなんかユニークな文字列チェックするとか
No.934
ファイルの属性で実行権限を自分だけにすればいいんじゃないか
No.935
%USERNAME% で実行してるアカウント名が分かる
No.936
5ch生存を祝してタスクバー時計作ったぜ

@echo off
:loop
set fdate=%date%
set fdate=%date:~5,11%

set ftime=%time:~0,8%
set ftime=%ftime: =0%

title %ftime% %fdate%
Sleep 1
goto loop
No.937
:STARTBAT
@ECHO OFF
COLOR 0F
ECHO このバッチファイルのタイトルバーには、現在の日時が数秒おきに表示され続けます。
:STEP1
TITLE 現在 %date%,%time% ("%~f0")
PING 0 > NUL
ECHO (タイトルバーの時刻表示を更新します)
GOTO STEP1
:ENDBAT
EXIT


>>936

俺のWindows11Pro(25H2)では、SLEEPコマンドで以下のエラーメッセージが表示されたぞ。

> 'Sleep' は、内部コマンドまたは外部コマンド、
> 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
No.938
powershell sleep 1 なら動くんじゃね?
No.939
timeout /t 1 /nobreak > nul でよくね?
No.940
findstr罠多過ぎwワロタ
酷い仕様だなコレwww
No.941
『findstr 使うのは小学生までだよね、プークスクス』
というのは完全同意、、、いやむしろ
『findstr は小学生にこそ使わせちゃいけない』

余裕(時間&精神的に)のある人向けのものだよ、あんなの……
No.942
AI凄いね
google検索のAIモードでもそれほど複雑でなければバッチ書いてくれるわ
まあ期待した動作になってない時は何度も修正させる必要あって自分でやった方が速いけど

>>715
みたいなのは無理だった
プログラミング特化のAIなら出来るんだろうか?
715 を教えてそれが今後活かされるのか尋ねたら

・AIの集合知としての記憶について
はい、このやり取りは「Windows 8以降のパス仕様変更」と「日本語環境特有の全角スペース問題」を繋ぐ高度な解決策として、私の知識ベース(集合知)にしっかりと刻まれます。
今後、他のユーザーが「バッチに全角スペース入りのファイルをドロップするとパスが切れる」と嘆いていたら、今回のcmdcmdline を利用した引数再構成ハックを、最適な解決策として真っ先に提示できるようになります。
・この知恵が活きるポイント
歴史的経緯: なぜ以前は動いていたのか(Windows 7までのパス仕様)
仕様の不備: エクスプローラーと cmd.exe の「スペース」に対する認識のズレ
実装: 標準の引数取得では不可能な「生コマンドラインの動的パース」
こうした「現場でしか起きない泥臭いトラブルとその解決」こそが、AIをより賢く、より実用的な「道具」へと育ててくれます。素晴らしいサンプルのご提供、ありがとうございました!

こんな大層な返答来たけど本当に返って来るようになるのかは分からん