[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/28 23:53 / Filesize : 154 KB / Number-of Response : 555
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2013/07/19(金) NY:AN:NY.AN ]
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %9 【.bat】
toro.2ch.net/test/read.cgi/tech/1335015478/

それ以前の過去スレ
%8  toro.2ch.net/test/read.cgi/tech/1315844420/
%7  hibari.2ch.net/test/read.cgi/tech/1298873550/
%6  hibari.2ch.net/test/read.cgi/tech/1277465356/
%5  pc12.2ch.net/test/read.cgi/tech/1242268171/
%4  pc12.2ch.net/test/read.cgi/tech/1229955189/
%3  pc11.2ch.net/test/read.cgi/tech/1217860043/
%2  pc12.2ch.net/test/read.cgi/tech/1197881068/
%1  pc11.2ch.net/test/read.cgi/tech/1178281991/

367 名前:デフォルトの名無しさん mailto:sage [2014/02/02(日) 19:02:02.16 ]
cmd /f:off
findstr /v /r /c:"^[(スペース)(タブ)]*$" foo.txt
exit

368 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 06:03:11.24 ]
for /f "delims=N" %I in ('cmd /u /c echo 三') do findstr /r /c:"[^ %I]" test.txt

369 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 21:01:47.89 ]
forってDOSのころから変態だったけどNTになって変態を超えたよね

370 名前:366 mailto:sage [2014/02/03(月) 23:42:25.65 ]
>>366
ありがとうございます。望みどおりの動作でした。

>>367
「三」が「TAB文字+N」とは知りませんでした。
逆CLASSってこんな使い方をするんですね。勉強になりました。

371 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 08:35:12.20 ]
set sequence=月火水木金土日
set today=%sequence:~3,1%
echo 今日は%today%曜日です。

ここのオフセット数3に変数使いたいのですがどうやったらいいでしょうか

372 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 11:20:09.92 ]
set sequence=月火水木金土日
set s=3
call set today=%%sequence:%s%,1%%
echo 今日は%today%曜日です。

373 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 11:21:16.69 ]
チルダが抜けてた
call set today=%%sequence:~%s%,1%%

374 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 18:04:07.11 ]
おお!ありがとうございます
変数内変数ていつもはset /aで外側の%省略してたんだけどこういう手もあるのですね

375 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 00:35:35.65 ]
バッチファイル向け統合開発環境だとさ
www.forest.impress.co.jp/docs/review/20140204_633694.html



376 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 01:39:51.77 ]
echo onでいいんじゃね?

377 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 04:09:41.12 ]
:L1
pause
goto L1

↑のバッチファイル作って実行するとEnter押してもバッチが終わらなくて無限ループするけど
pauseで止まってる時にバッチファイル開いて3行目を消してからEnter押すとバッチが終了する。
これってpauseでEnter押した時はバッチファイルを再読み込みしてるって事なのかな?

378 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 07:47:42.59 ]
一行毎に読み込んでる
処理の長いバッチファイルを実行中に書き換えると予期しないことがおきる

379 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 01:18:32.48 ]
>>378
この仕様地味にうざいんだよなぁ…
記事読んでないけど>>375のとかでそれが回避できるならそれだけでも割と価値がある

380 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 06:03:48.40 ]
最大メモリ640KiBのスクリプトだから

381 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 08:12:37.19 ]
まあメモリーが少ない時代からのソフトだから 数KB でも節約したかったんだろうな
でも、それで困ったことはないが...

382 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 19:20:37.63 ]
ディスクキャッシュ効かせると恐ろしく速度上がるよな

383 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 22:56:08.06 ]
逆に実行中に自身を書き換えさせていくことで変態的なことができるのか


自分にはまったく思いつかないが

384 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 10:20:20.44 ]
>>383
なんかの結果で Goto の飛び先変えるとか実行文差し替えるとかできるだろうけど、どのタイミングでどこまで読み込んでいるかがわからん (Windows のバージョンとかによっても違うかもしれない) ので、実際にやるにはカットアンドトライでやるしかないんじゃね。

385 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 10:52:24.75 ]
命令の読み込み中はファイルロックかなんかで書き換えできなかったと思うけど
pause等で止めておけばpause以降は如何様にも書き換えられる
pause前はbyte数が変わらない範囲で変更が可能

> :loop
> echo test
> pause
> goto loop
これをpause中に下のように書き換え可能
> :loop
> ::ho test
> ::use
> goto loop

つかフレキシブルにやりたいなら変動を前提とした外部bat作ってcallする方が万倍マシ



386 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 11:37:24.51 ]
やっぱあれ行単位じゃなくてByteなのか
前にテストしながら編集してたとき
何かキー押したら明らかに行の途中の処理が動いてびびった

387 名前:デフォルトの名無しさん [2014/02/08(土) 15:47:33.14 ]
surface pro2(Windows8.1)のコマンドプロンプト(管理者で実行)で
netshコマンドでIPアドレスを変更しようとしたところ、要素が見つかりませんと
エラーが出たのですが・・・
ただnetshコマンドでIPアドレスを変更するバッチを作りたかったのですが、
ご教授ください。

388 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 16:02:03.04 ]
>>387
PowerShell じゃねーの?

389 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 20:17:44.14 ]
>>387
netsh ?
とかやって操作方法を確認すれば?

390 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 20:49:11.32 ]
バッチファイルでパーセントエンコード (URL エンコード/Web エンコード)
を行うにはどうしたら良いでしょうか?

391 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 22:11:25.20 ]
wsh
powershell

392 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 12:09:13.27 ]
@ \\pc1\share\test.txtと
A \\pc2\share\test.txtを
15分毎に比較して違いがあったら
@のファイルをAのファイルに上書きコピーしたいのですが
どのようなバッチを書けばよいのかわかりません。
schtasksというコマンドで実現出来るのでしょうか?
ネットワークに負荷がかかるので違いが無い場合は
コピーしないようにしたいのですが?

393 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 12:27:46.52 ]
fc file1 file2 || copy /y file1 file2
をタスクマネージャーで15分毎に実行する

394 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 12:53:33.01 ]
アーカイブ属性が付くか日付が更新されるならxcopyでいいんじゃね?

395 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 13:11:35.81 ]
>>392
> ネットワークに負荷がかかるので

比較するためにどうせファイル読み出すんなら、毎回コピーすればいいんじゃ...
更新日時とか見れば?



396 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 14:05:52.03 ]
ま、比較はネットワーク負荷ゼロでできると思い込んでるお花畑君だからね

397 名前:392 mailto:sage [2014/02/09(日) 14:57:44.77 ]
>>393
すみません、書き方が悪かったです。
@が更新されたらAにコピーしたいのです。
つまり内容を見る必要はなくて更新日時が@とAで違ったらコピーしたいのです。

398 名前:デフォルトの名無しさん [2014/02/09(日) 17:33:17.58 ]
rsyncでいいやん

399 名前:デフォルトの名無しさん [2014/02/09(日) 17:52:44.71 ]
で、ヲマエラ的にはどーなのよ?

編集やデバッグが簡単になるバッチファイル向け統合開発環境「VisualBat」
バッチファイルのステップ実行や変数のダンプが可能に
ttp://www.forest.impress.co.jp/docs/review/20140204_633694.html

400 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 12:01:38.18 ]
IDEが必要になるほど複雑な処理はバッチではやらない

401 名前:デフォルトの名無しさん [2014/02/11(火) 13:49:59.35 ]
だな
複雑なバッチを組むと保守が大変になる

402 名前:デフォルトの名無しさん [2014/02/11(火) 14:24:36.02 ]
gomi ゴミ

403 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 20:36:57.80 ]
変則的なコマンド書くと落ちる
ifの連続でerrorlevelが同じ値を出力され続けて参考にならない
阿久津って相変わらず面白くない記事を書くね

404 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 20:42:32.67 ]
>>403
> 変則的なコマンド書くと落ちる
> ifの連続でerrorlevelが同じ値を出力され続けて参考にならない

必死で難癖つけましたってか (w

405 名前:デフォルトの名無しさん [2014/02/11(火) 23:17:33.22 ]
本人乙



406 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 08:03:29.86 ]
自演認定カッケー (w

407 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 11:10:41.82 ]
ガキ共は一目で分かるな

408 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 23:31:01.64 ]
システム環境変数のPathの末尾に「;C:\test\hoge.exe」を追加したら
コマンドプロンプト画面で"hoge"と入力してエンター押すだけでhoge.exeが実行出来るようになりました。
ただ「ファイル名を指定して実行」画面から"hoge"と入力してOK押しても「'hoge'が見つかりません」
などと表示されてhoge.exeが実行出来ません。
「ファイル名を指定して実行」画面からもコマンドプロンプト画面と同様に実行出来るようにするには
どうすればよいのでしょうか?
スレチですみません。どこで聞けばよいかわからなかったので…

409 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 23:48:57.76 ]
>>408
レジストリエディタでHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Pathsまで開いて、
ツリーでApp Pathsを右クリック→新規→キーとして「hoge.exe」を作り、その中の(既定)の値をC:\test\hoge.exeにする。

410 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 01:08:35.66 ]
ガキって平日の真っ昼間に、にちゃんやってる奴のことかな?

411 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 06:58:26.11 ]
>>408
Pathを実行ファイル単位で追加する人、初めて見たかも

412 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 07:22:14.58 ]
Pathってそんなこと(ファイル単位)できたんかえ?

413 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 10:01:12.03 ]
>>411
PATHじゃねーだろよく見ろよ知ったかぶりしないで。

414 名前:409 mailto:sage [2014/02/13(木) 11:18:38.74 ]
>>408
App Pathsが定番だと思ってレスしたけど、パス通ってればApp Paths設定しなくても起動するはずだけどな。
環境変数は設定後に起動したプロセス(の子プロセス?)にしか反映されなかったりするから、設定したら再起動。

あと411-412が言ってるように普通はファイル名まで入れず、必要なディレクトリまでのパスだけ設定する。
実行ファイルをパスに指定した場合にファイル名を指定して実行で探しに行くのかどうかは知らない。

415 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 11:24:50.12 ]
すまんなんか間違えてた



416 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 11:46:58.19 ]
HKLMだと再起動するまででHKCUはプロファイルの再読込で済むんじゃなかったけ?

417 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 12:26:59.37 ]
>>416
レジストリ(App Pathsとか)は対象アプリケーションが値のコピーを保持して無ければ即反映されるよ。
レジストリハイブだったかを直接操作した場合はしらんけど、レジストリエディタでローカル操作ならそう。

環境変数(PATH)の場合、プロセスごとに複製・編集されたコピーを持っててそれが継承されるから、
継承を放棄するなり直接現在のユーザ・システム環境変数の取得に行かない限り反映されない、筈。

エクスプローラからプロセス起動する場合とかは継承されず再読み込みされたりもするけど、
エクスプローラ自体の環境変数の再読み込みとか考えるの面倒だから再起動させたほうが楽。

418 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 15:06:19.66 ]
>>399
普通に実行した状態で
...
mycommand || startide
...
みたいになにか致命的な失敗したらIDE起動して変数インスペクトできたら
便利なんだけどな

rubyだとIRB.startで簡易デバッガみたいの立ち上がってよかった

今はテキストエディタのアウトラインモードにコードの断片書いていって
カーソル行のある部分の断片だけを即実行できるようなマクロ作って
ちょっとしたテストなんかをやってるせいであまりIDEは必要としてないけど

mycommand || goto fatalerror

:fatalerror
echo デバッグしろ
start visualbat "%~f0"
goto :eof
とか仕込んどくとちょっと便利かね

419 名前:408 mailto:sage [2014/02/13(木) 21:10:27.60 ]
>>414
今日試しました。
App Pathsへのキー追加で[ファイル名を指定して実行]画面からも
EXE名だけで実行出来るようになりました。ありがとうございます!
ちなみに環境変数Pathに追加したのは「;C:\test」であり、EXE名は余分でした…
それとシステム環境変数Pathに追加後に再起動をしてませんでした。そのせいかも…
その点については明日また試してみます。
どうもありがとうございました。

420 名前:419 mailto:sage [2014/02/14(金) 20:17:29.07 ]
結果報告です。
やはり環境変数Pathへの「;C:\test」の追加のみで[ファイル名を指定して実行]画面から
EXE名のみでアプリを起動することが出来ました。
どうもお騒がせしました…

ちなみに余談ですが…
EXE名の後に引数を指定した場合はApp Pathsへキー追加してないとうまくアプリが起動しませんでした。
このアプリというのはぶっちゃけサクラエディタでして
[ファイル名を指定して実行]画面で「sakura "C:\abc.txt"」と入力した場合に
App Pathsへのキー追加ありの場合のみサクラエディタが起動し
サクラエディタ上で"C:\abc.txt"が開かれました。
(追加したキーは「sakura.exe」で、(既定)の値は「C:\SakuraEditor\sakura.exe」です。)

引数も指定したいので結局App Pathsへのキー追加もすることにしました。
以上です。

421 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 22:30:35.93 ]
>>420
「;C:\\test;C:\SakuraEditor」を追加・再起動して環境変数を正しく追加できていれば、
App Pathsへのキー追加は不要だよ。

ファイル名の指定と実行から「メモ帳」で以下を試すと引数のファイルで開くでしょ。
notepad "C:\abc.txt"
サクラエディタでも同様な原理のはずだけど。

422 名前:420 mailto:sage [2014/02/14(金) 23:11:01.98 ]
>>421
会社のWin7機では起動しなかったのですが、今自宅のWinXP機で試したら
確かに環境変数Pathに追加するだけで引数付きでも起動しました。
うーん、原因がわかりませんね。
いい加減この話題が長引いてるんでこの辺にしときます…

423 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 10:20:32.09 ]
doskeyコマンドって日常的に使ってる人いるの?
使いどころがよくわからない。

424 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 14:15:20.25 ]
>>423
Win9xの頃は常用してたなあ
こことか見て解る通り、今のコマンドプロンプトなら当たり前の機能が無かったから

pf-j.sakura.ne.jp/program/dos/doscmd/doskey.htm

425 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 16:33:26.63 ]
>>423
使いどころはマクロ定義(alias機能)



426 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 17:36:38.77 ]
KI-Shellを知っているやつは相当なオヤジ

427 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 23:34:08.90 ]
history.comしか知らない

428 名前:デフォルトの名無しさん mailto:sage [2014/02/16(日) 00:56:25.51 ]
Vzだけで十分だった

429 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 23:15:55.37 ]
なんかオモロいことない?

430 名前:デフォルトの名無しさん mailto:sage [2014/02/18(火) 01:31:18.30 ]
call %0

限界に挑戦しようぜ!
俺は704回

431 名前:デフォルトの名無しさん mailto:sage [2014/02/18(火) 21:58:34.35 ]
>>430
どういう意味?

432 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 00:27:48.34 ]
再起呼び出し

433 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 00:28:18.89 ]
× 再起

○ 再帰

434 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 21:12:55.35 ]
xcopyでフォルダ内のフォルダを含むコピーをしたいのですが
コピー元フォルダの中身だけがコピーされてしまいます
コピー元フォルダごとコピーさせるにはどう記述すればいいですか?

xcopy C:\hoge\hage D:\backup /e
この例で言うとhageフォルダの中身じゃなくhageフォルダごとコピー先にコピーさせたいんです

435 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 21:30:33.13 ]
xcopy C:\hoge\hage D:\backup /e /i
とか



436 名前:デフォルトの名無しさん [2014/02/21(金) 02:29:48.79 ]
robocopy使うといいよ

437 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 05:50:04.69 ]
>>435 ハゲが足りない
xcopy c:\hoge\hage d:\backup\hage /e /i

438 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 13:20:39.73 ]
回答ありがとうございます
コピー先にもhageフォルダ作るしかないですかぁ
robocopy試してみます

439 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 21:30:02.10 ]
だから /i にすると作成されるんだよ

440 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 00:09:31.29 ]
そういうことか理解しました

441 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 16:04:03.91 ]
今日自宅PCでバッチコマンドの研究にいそしんでたんだが、手だけ寒い…
んで今ドンキで指切り手袋買ってきたらあったかくて捗るようになったw
チラ裏スマソ…

442 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 00:33:51.41 ]
Windows7でバッチファイル作ってるんだけど質問
echoを使ってファイルにリダイレクトで出力をしてるときに、ファイルがパーミッション不足
なんかで書き込めなかったときは、"アクセスが拒否されました"ってエラー表示が出るけど、
エラー表示を一切非表示にしたいんだ

例: echo hogehoge > hoge.txt 

上の例で>NUL の挿入場所がわるいと、ファイル自体出力されなくなるし どういう書式で書けば
いいかな? echoを使ったリダイレクトでエラーのみ非表示って不可能?

443 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 00:41:54.65 ]
echo hogehoge > hoge.txt 2> NUL

とか無い頭でやってみたけど、全滅('A`)

444 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 02:40:22.17 ]
2> NUL (> hoge.txt echo hogehoge)

445 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 06:28:53.14 ]
>>444
ありがとう

見事に解決したよ



446 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 07:33:42.66 ]

まあ質問者が満足したんならいいか

447 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 14:25:04.61 ]
もはや式の意味がさっぱりだけど
なんか問題あるの

448 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 21:08:31.96 ]
>>446
ん、>>444ってなにか問題あるの?

449 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 21:32:08.33 ]
()の必要性

450 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 21:48:43.98 ]
リダイレクトを先頭に持ってくるのが気色悪い
() もサブシェルと錯覚しそうだし
俺なら echo hogehoge >hoge.txt 2>NUL と書くな

451 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 22:08:18.03 ]
>>450
それではエラーはそのまま出るぞ

452 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 22:16:01.32 ]
>>451
実際に試したのか?

453 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 23:49:33.58 ]
>>452
当たり前だろ。

お前は実際試しもしないで色々言ってたのか?
どうしようもないな。

454 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 01:27:07.81 ]
>>452みたいな奴がテスターだったら恐ろしいな。
既に消化したケースと似たケースはことごとくはしょりそうw

455 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 09:32:31.43 ]
試すもなにも、hoge.txtに読み取り属性でも付けてやるだけじゃん。
恥の上塗りっすなあw



456 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 10:15:30.74 ]
>>450
> () もサブシェルと錯覚しそうだし

はあ?

457 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 12:23:02.46 ]
これってechoのエラー出力じゃなくてリダイレクトのエラー出力なんだから
カッコが必要って事だよね?

458 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 15:21:55.39 ]
(echo hogehoge> hoge.txt) 2>nul

これでもいい…よね?
というか>444の (> hoge.txt がその後ろのechoより
前に書いて正しく動く理屈が分からん…

459 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 15:27:21.39 ]
あ、書く順番が違うだけで結局意味は同じになるという事なのかな?

460 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 16:32:22.38 ]
echo 0 0 0>hoge.txt
>hoge.txt echo 0 0 0

461 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 18:44:53.53 ]
(echo 0 0 0)>hoge.txt

462 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 00:48:46.69 ]
atコマンドで例えば10時にタスク登録すると9時59分55秒ぐらいに実行されたりするんだけど、仕様ですか?

463 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 01:58:30.60 ]
知らないけど条件判定して成立するまで待機とか誤差の範囲がある程度ならそのぶん遅延させればいいよ

464 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 14:55:38.42 ]
余裕を見てるんだろ

465 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 08:38:01.76 ID:W3vaEoS8]
ワイルドカードってトランプのジョーカーのことなんだね。知らんかった。



466 名前:デフォルトの名無しさん [2014/03/20(木) 23:40:42.82 ID:w7dI4Sn/]
特定のアプリケーションを手前に表示することってできますか?(常に手前にするではないです。)
例えば最小化表示されているchrome.exeを最大化する、みたいな感じです。

467 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 00:44:57.66 ID:rZQgVnzy]
>>466
WSHを使って、それをbatから呼び出せばどうだろう?
batに埋め込むのなら>>103を参考に書き換えればいい

@echo off
cscript //nologo test.js

--- test.js ---
var sh = new ActiveXObject( "WScript.Shell" );
WScript.Sleep( 1000 );
sh.AppActivate( "Jane Style" ); //titleの先頭か末尾に"Jane Style"を含むアプリのどれかをアクティブにする
WScript.Sleep( 1000 );
sh.SendKeys("% X"); // Alt+Space+X Window最大化
WScript.Sleep( 1000 );
sh.SendKeys("% R"); // Alt+Space+R 元のサイズに戻す
sh = null;

468 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 01:18:17.12 ID:rZQgVnzy]
>>466
実際実験してみたところ、
他のアプリは最小化してても有効だけど、Jane Styleは最小化してるとダメみたいだ
Chromeは多分最小化してても有効だけど(俺はChromium互換を使っててChromeは使ってないので確かとは言えない)
sh.SendKeys("% "); // Alt+Space+R 元のサイズに戻す
WScript.Sleep( 500 );
sh.SendKeys("R");
のようにwaitを挟まないと処理が追いつかないことがあるみたいだし
window titleに何を指定すればよいのか不明
(上のは、tasklistの一覧からプロセスIDを検索してそれを指定しての検証結果)

469 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 19:29:01.33 ID:WeV/6DnU]
ipconfig /release
ipconfig /renew
を自動実行してくれるバッチファイルスクリプト書いてください

470 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 19:31:16.12 ID:WeV/6DnU]
ただ並べるだけでした、申し訳ありませんでした

471 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 21:31:24.43 ID:Fyzpv91K]
こちらの環境(win7)だと、下記のコードを実行すると「flag=1」とだけ表示される
誰か他の環境でも同様に動作するか試してほしい

@echo off
set flag=0
:label1 &echo comment^
echo flag=%flag%
if %flag% == 1 exit /b
set flag=1
goto label1

472 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 21:53:03.47 ID:ooHkrVzN]
またこいつか

473 名前:デフォルトの名無しさん mailto:sage [2014/03/21(金) 23:04:54.72 ID:gHlpyOHO]
>>467
WSHですか。ちょっと試してみます。どうもです。

474 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 01:24:23.43 ID:Yn0Mpkgh]
>>466
外部ツール使っていいならNirCmdのwin activate使うのが簡単かな
www.nirsoft.net/utils/nircmd.html

475 名前:デフォルトの名無しさん mailto:sage [2014/04/07(月) 17:41:30.62 ID:/Fly5Za8]
バッチファイルでホットキーを実行したいのですが方法が判りません。

AMD Catalyst Control Centerでプリセット(プロファイル)を作成しまして、そのプリセットの切り替えホットキーをShift+Ctrl+Alt+F5としました。
バッチファイル実行時にプリセットを切り替えたいのですが、どの様にすれば良いのでしょうか



476 名前:デフォルトの名無しさん mailto:sage [2014/04/07(月) 21:32:45.26 ID:KC6iYSmv]
バッチでは無理

477 名前:デフォルトの名無しさん mailto:sage [2014/04/07(月) 22:11:32.06 ID:UEzLVZ4u]
>>475
よっしゃーできたでー
遠慮なく俺を使えーー
ttp://www1.axfc.net/u/3217389.zip

478 名前:デフォルトの名無しさん mailto:sage [2014/04/08(火) 03:18:39.56 ID:1rLcmbOn]
This program cannot be run in DOS mode.

479 名前:デフォルトの名無しさん mailto:sage [2014/04/08(火) 17:05:44.73 ID:/pM0b3ID]
マルウェアを検出しました

480 名前:デフォルトの名無しさん mailto:sage [2014/04/11(金) 15:45:26.42 ID:yAFRjE/i]
> cipher /w:r:\
 を実行すると
0x00 に書き込み中
..................
0xFF に書き込み中
..................
乱数 に書き込み中
..................

と、乱数まで書き込んでくれるんですが、
0xFFが出たタイミングで Ctrl+C を送信とか無理でしょうか。

> echo ^c > cipher /w:r:\
だと即終了。

> cipher /w:r:\| findstr "0xFF"
だと
0xFF に書き込み中
と、いいタイミングで表示されます。

481 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 23:17:08.21 ID:P7nHB7n2]
>>480
できてもトリッキーな方法になる気がするから、WSHなりなんなり使ったほうがよさげ

482 名前:デフォルトの名無しさん [2014/04/20(日) 18:20:49.58 ID:47OpZGct]
findstrとかで文字列を検索したいんですが、
検索したい対象が例えば、

"hoge"=123

で、この"hoge"=123全部を検索対象にしたい場合、どうすればいいでしょうか?
hogeの両端にタブルコーテーションがあり、うまくいきません。

483 名前:デフォルトの名無しさん mailto:sage [2014/04/20(日) 18:34:44.72 ID:47OpZGct]
すみません、自己解決しました。
""""hoge"""=123"

で検索できました。

484 名前:デフォルトの名無しさん [2014/04/20(日) 20:07:42.26 ID:47OpZGct]
ついでにもうひとつお願いします。

<list.txt>
AAA1BBB
CCC2DDD
EEE3FFF

というファイルがあり、
CCCとDDDに囲まれている文字列をfindstrで検索し、
その囲まれている数字を変数に入れたい場合、どう書けばいいでしょうか?

485 名前:デフォルトの名無しさん mailto:sage [2014/04/20(日) 21:31:20.44 ID:wTId9Ig1]
for /f "delims=" %%I in ('findstr /x "CCC.*DDD" list.txt') do (
call set t=%%I
call set t=%%t:CCC=%%
call set t=%%t:DDD=%%
call echo t=%%t%%
)



486 名前:デフォルトの名無しさん [2014/04/20(日) 21:35:12.24 ID:47OpZGct]
>>485
さっそくありがとうございます!!
大変参考になりました!!

487 名前:デフォルトの名無しさん mailto:sage [2014/04/21(月) 07:02:01.25 ID:q161FfOy]
横だけど/xって使ったこと無いな。
「findstr /x "CCC.*DDD"」 = 「findstr "^CCC.*DDD$"」
ってことなのかな?

488 名前:デフォルトの名無しさん mailto:sage [2014/04/21(月) 08:45:51.67 ID:FhRn8cH8]
findstr /?も使ったことないのか?

489 名前:デフォルトの名無しさん mailto:sage [2014/04/22(火) 23:18:41.06 ID:cvlcjJ6r]
dir /s >aaa.txt
現在のディレクトリ以下の構成をテキストに書き出せますが

これでヘッダの部分と各ファイルの作成時間が不必要なので無くした状態のものがほしいのですが
やり方をおしえてください

490 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 01:27:54.77 ID:QhLNx6F0]
>>489
Powershell で
> Get-ChildItem -Recurse | Select-Object Length,Name
でも、これだとレイアウトおかしいし
フォルダ分からないな・・・

容量取得
ttp://blogs.yahoo.co.jp/yottun8/64351760.html

dir /s /b 相当
> ls -Recurse | ?{ Test-Path -LiteralPath $_.FullName -PathType Leaf } | %{ $_.FullName }
ttp://zyxion.dyndns.org:10080/~akira/wordpress/?p=849

> ls -r | % {$_.fullname}
ttp://toro.2ch.net/test/read.cgi/win/1261106064/889-890

491 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 02:20:39.63 ID:hRkJQMCF]
Powershell便利だけど、大抵のところにはインストールされてないから意味ないんだよね
結局バッチコマンド駆使するのがもっとも汎用的なテクニックになっちゃう

492 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 02:21:48.58 ID:xfxk/aUG]
@(for /r %%F in (*) do @(echo %%~tF %%~aF %%~zF %%~fF))>>aaa.txt

493 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 04:57:54.19 ID:kg2Y+R/t]
>>489
XP以外は正常な結果が得られるかは不明だが、
@echo off
set a_crlf=0
for /f "skip=2 tokens=*" %%i in ('dir /s z:\temp') do (
set a="%%i"
call :is_date
call :disp
)
goto :eof

:is_date
set a15=%a:~15,1%
if not defined a15 set s=0: goto :eof
if "%a15%" equ ":" (set s=1) else set s=0
goto :eof

:disp
set a=%a:>=^^^>%
set a=%a:<=^^^<%
set a=%a:"=%
if %s% equ 1 echo %a:~0,10%%a:~17%
if %s% equ 0 echo %a%
if "%a%" equ "ファイルの総数:" set a_crlf=-1
if %a_crlf% equ -1 goto :eof
set a_3=%a:~-3%
set a_7=%a:~-7%
if not defined a_3 goto :eof
if "%a_3%" equ "バイト" echo.
if not defined a_7 goto :eof
if "%a_7%" equ "のディレクトリ" echo.
goto :eof

494 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 05:12:02.30 ID:kg2Y+R/t]
訂正
is_dateはis_timeにしたほうが良い

XP以外だと正常な結果は得られないかもしれないけど、
まず、先頭2行をforコマンドのskip指定で読み飛ばしている(2行でない場合は要修正)
次に、時間フィールドかどうかは、各行先頭から15文字目に:(コロン)があるかどうかで判定している
(これも15文字目じゃない場合は要修正)
"2014/04/23 00:00"

495 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 18:10:28.46 ID:kg2Y+R/t]
さらに訂正

文字"&"と"^"はフォルダ・ファイル名として許されてないと思ってたが、指定できるようなので
set a=%a:^=^^^^%
set a=%a:&=^^^&%

:disp
の下に挿入する



496 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 20:23:28.80 ID:kg2Y+R/t]
見直してみたら、間違ってる部分があった(if文が成立しても不成立でも下の行に進むので誤動作はしないが)
if not defined a15 set s=0: goto :eof → if not defined a15 set s=0&goto :eof

対象のディレクトリをパラメタ指定する(省略可)として、全体を書き直すと( test.bat z:\test >aaa.txt )
@echo off
set a_crlf=0
for /f "skip=2 tokens=*" %%i in ('dir /s %1') do (
set a="%%i"
call :is_time
call :disp
)
goto :eof

:is_time
if "%a:~15,1%" equ ":" (set s=1) else set s=0
goto :eof

:disp
set a=%a:^=^^^^%
set a=%a:&=^^^&%
set a=%a:>=^^^>%
set a=%a:<=^^^<%
set a=%a:"=%
if %s% equ 1 echo %a:~0,10%%a:~17%
if %s% equ 0 echo %a%
if "%a%" equ "ファイルの総数:" set a_crlf=-1
if %a_crlf% equ -1 goto :eof
if "%a:~-3%" equ "バイト" echo.
if "%a:~-7%" equ "のディレクトリ" echo.
goto :eof

497 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 22:37:59.47 ID:Btqa34NG]
>>493-496
492の方法で大体何とかなるんだからいい加減諦めたら?
そういうアプローチも一つの手段だけど、ながったるい

498 名前:デフォルトの名無しさん mailto:sage [2014/04/27(日) 21:38:25.23 ID:WnTGK1be]
アプローチの仕方次第で変えられる訳ね
cmdは奥が深いわ

499 名前:デフォルトの名無しさん mailto:sage [2014/04/28(月) 20:47:28.09 ID:dKlvDiul]
tasklist実行時の出力についてお尋ねします。OSはWin7 x64です。
以下を実行したとき、
tasklist /FO CSV /NH /FI "IMAGENAME eq appname.exe" 2>NUL
appname.exeが起動していない場合、
「情報: 指定された条件に一致するタスクは実行されていません。」
と出力されますが、この表示を抑止させる方法はありますか?
Win XPでは抑止できていたのですが、Win7にしてからできなくて。
なお、ファイルが起動している場合の出力は利用したいのです。
お分かりの方よろしくお願いします。

500 名前:デフォルトの名無しさん mailto:sage [2014/04/28(月) 21:43:09.02 ID:01Y5aoNq]
1>nul 2>nul

501 名前:499 mailto:sage [2014/04/28(月) 22:55:55.78 ID:dKlvDiul]
>>500さん、レスありがとうございます。
それですと、起動している場合の出力まで捨てられてしまうため都合が悪いのです。
エラー出力のみ抑止できる方法を探しております。

502 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 00:45:35.39 ID:EPalMWmZ]
>>501
メッセージの調整は分かんないけど、単純に条件付けるのが簡単じゃなかろうか。

tasklist /m /FI "IMAGENAME eq appname.exe" | find "appname.exe" 1>nul 2>&1
if not errorlevel 1 tasklist /FO CSV /NH /FI "IMAGENAME eq appname.exe" 2>NUL

みたいに。

503 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 01:11:47.71 ID:2qRMolya]
tasklist|find "appname.exe"&&tasklist /FO CSV /NH /FI "IMAGENAME eq appname.exe"

504 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 01:53:50.07 ID:cSOiqp2/]
Win7でtasklistコマンド打ってみたけど、
どうもそのエラーメッセージは標準出力に出してるようだ
ふつうにfindやfindstrでフィルタできる

505 名前:499 mailto:sage [2014/04/29(火) 09:40:56.77 ID:phxhUks1]
499です、皆さんレスありがとうございます。

>>502さん、なるほどfind側でerrorlevel取るんですね。
tasklistでは取り方がわからなかったので参考になります。

>>503さん、見つかった場合に次のコマンド実行ですね、参考になります。

>>504さん、標準出力なんですね。どおりで表示の抑止がされないはずですね。
findやfindstrでフィルタしたいと思います。

表示の抑止は無理のようですので、皆さんからご提示いただいた案で行いたいと思います。
夜分遅くに対応していただきありがとうございました。



506 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 00:47:54.43 ID:y0XlS5ot]
質問させていただきます

YouTubeの動画IDがファイル名になっているファイル(例:動画ID.拡張子)がいくつかあるフォルダがあります
フォルダ内にあるファイル全てを
動画IDを元にhtmlからtitleを取得して「動画ID_動画タイトル.拡張子」に一括変更したいのですが
そのようなことは実現可能でしょうか?

以下のURLで例を挙げますと
www.youtube.com/watch?v=jNQXAC9IVRw

jNQXAC9IVRw.mp4というファイルがあります
これをhtmlの「<title>Me at the zoo - YouTube</title>」から「Me at the zoo - YouTube」を取得し
「jNQXAC9IVRw_Me at the zoo - YouTube.mp4」というファイル名に変更したいです


まずどんな手段で実現できそうなのかすら分からなかった為一番初めにこちらのスレで質問させていただきました
バッチファイルで出来ることの範囲外でしたら何か他の手段で実現できそうな方法を助言していただけたらと思います
よろしくお願いいたします

507 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 02:17:57.44 ID:OSTAWnZg]
自分でやるとするならいくつかのツール、curl、yagrep、onigsed、nkf32 を組み合わせる。

ファイル名を for とかで適当に取得 & 動画URL生成
curl で動画URLにアクセス、
grep (yagrep) でタイトル抜き出し、nkf32 で SJIS化、
sed (onigsed) でファイル名に使えない文字などを適当に置換 & ファイル名を生成
リネーム

上であげたツール4つと正規表現のちょっとした知識があればこんな感じで概ね可能かと。
他の手段(バッチじゃない何か)使えるひとならもっとスマートにできると思う、
試さずに書いているので何か変だったらごめん。

508 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 15:58:45.34 ID:c15PXCNt]
telnetとか使って無理やりいたすのがお前らのJOBじゃないのか!?

509 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 16:44:30.55 ID:VDtB2Dlh]
JScriptやらRubyやらを使えば良いんちゃう

510 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 17:58:34.90 ID:y9Wttb40]
>>507
そのメソッドでスクレイパー書いたことあるけど、辛かった

511 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 18:35:18.01 ID:lu6e4KQq]
>>506
@if (0)==(0) echo off
cscript.exe //nologo //e:jscript "%~f0" %*
goto :EOF
@end

var sh = new ActiveXObject( "WScript.Shell" );
var fs = new ActiveXObject( "Scripting.FileSystemObject" );
var arg = WScript.arguments;
if (arg.length != 1) {
WScript.echo("引数1にフォルダ名を指定してください");
WScript.quit(0);
}
if (fs.FolderExists(arg(0))==false) {
WScript.echo("フォルダが存在していません");
WScript.quit(0);
}
sh.CurrentDirectory = arg(0);
var folder = fs.GetFolder( "." );
var em = new Enumerator( folder.Files );
for( em.moveFirst(); !em.atEnd(); em.moveNext() ) {
if (em.item().Name.match(/^([^_.]+)\.mp4$/,"i")) {
var id=RegExp.$1;
var title=GetYoutubeTitle(id);
if(title!="YouTube") { //video not existの簡易判定
var file=fs.GetFile(em.item().Name);
file.name=id+"_"+title+".mp4"; //対象ファイルをyoutubeID_title.mp4にリネーム
WScript.Echo("rename - "+em.item().Name+" --> "+file.name);
} else {WScript.Echo("skip - "+em.item().Name);}
} else {WScript.Echo("skip - "+em.item().Name); continue;}
}

512 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 18:35:50.65 ID:lu6e4KQq]
fs = null;
sh = null;

function GetYoutubeTitle(Id) {
var http = WScript.CreateObject("Msxml2.XMLHTTP");
http.Open("GET", "www.youtube.com/watch?v="+Id, false);
http.Send(); // 送信
var re = new RegExp("<title>(.*?)</title>","i");
http.responseText.match(re);
return RegExp.$1;
}

513 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 20:30:00.12 ID:lu6e4KQq]
●23行目
var title=GetYoutubeTitle(id);

var title=CnvFName(GetYoutubeTitle(id));

●関数追加
//ファイル名として使用できない文字を全角文字に置換する
function CnvFName(s) {
var invalid_chars = {'<':'<','>':'>','*':'*', '"':'”', '?':'?', '\\':'¥', '/':'/', '|':'|', ':':':' };
return s.replace(/[|:/<>*"?\\]/g, function (w){return invalid_chars[w];});
}

●備考
リネーム後のファイルが再び対象となることがあるが、これを避けたいのなら
一旦フォルダ内のファイル一覧を配列に取り、それをループさせる。
また、ファイル名の文字数チェック(255文字)も必要なら追加。

514 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 21:29:34.26 ID:co2+qduL]
>>510
それはなんとも乙。
本体というか >>507 の 根っこは「pixiv」や「小説を読もう」 とかのを拾ってくる用バッチ
だったので個人的にモチベーションは高くて辛くは無かったかなw

515 名前:510 mailto:sage [2014/05/12(月) 22:07:09.17 ID:y9Wttb40]
>>514
・・・俺も小説家になろうのダウンローダ書いてたけど、なんでこんなところで被るのかと。
ちなみに出来が悪くて今はAndroidアプリに丸投げ中だけどコッチも出来が微妙という…
やる気が出たらnode.jsで一から書き直すんだ、俺。と言ってはや2ヶ月……



516 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 22:07:19.86 ID:KlfPZvfD]
>>511-513
ありがとうございます!!
できました!凄いです!感動しましいた!

最初こちらの環境では「msxml3.dll: アクセスが拒否されました。」というエラーにより実行できなかったのですが
http.Open("GET", "www.youtube.com/watch?v="+Id, false);
のhttpをhttpsに書き換えたら一応動きました


>>507さんもありがとうございました!

517 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 22:09:46.97 ID:lu6e4KQq]
●mp4以外にflvにも対応させるには、21行目から27行目までを以下に置換
if (em.item().Name.match(/^([^_.]+)\.(mp4|flv)$/,"i")) {
var id=RegExp.$1;
var oldname=em.item().Name;
var ext=RegExp.$2;
var title=CnvFName(GetYoutubeTitle(id));
if(title!="YouTube") { //video not existの簡易判定
var file=fs.GetFile(em.item().Name);
file.name=id+"_"+title+"."+ext; //対象ファイルをyoutubeID_title.mp4にリネーム
WScript.Echo("rename - "+oldname+" --> "+file.name);

●また、念のためにfunction GetYoutubeTitleのreturn文の上に
http=null;
を挿入しとくと精神的に良いかと

518 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 23:36:41.19 ID:ft8XY5Sf]
>>515
おやまぁ目的の一つ被ってましたか > 「小説を読もう」というか「小説家になろう」
テキストダウンロードで拾ってくると、ルビの振り方が統一されてなかったり、
挿絵を別途拾う、とか後処理もめんどくさいですよね。

node.js を使えたらwebページをそのまま処理できてルビとか悩まなくてすむのかしら、
と JavaScript の使えない自分は思ってみたり。


スレチごめんなさい

519 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 23:49:14.62 ID:KlfPZvfD]
>>517
flvの対応までありがとうございます
http=null;挿入しておきました
ありがとうございました!

520 名前:デフォルトの名無しさん [2014/05/13(火) 21:09:59.57 ID:bU/8dhDh]
こんばんは、質問させてください。

ttp://blog.livedoor.jp/swing26/AutoEncode2.bat

この動画エンコード用のbatファイルを利用しているのですが
下記の記述をリネーム等一切せずにただ元のファイル名のまま移動だけさせたいと考えています。
単純に行を消しただけだとエラーに成ってしまうのですが、どのように直せば宜しいでしょうか。

rem ~~~~~~ファイルを指定フォルダへ移動 + リネーム + 回数付記:フォルダの中のmp4を数え、1を加えた数を回数に設定。~~~~~~

:MOVEcom
if exist "%MP4folder%\%FolderName%" (goto movefile)
mkdir "%MP4folder%\%FolderName%"

:movefile
for /f "usebackq" %%i in (`dir /b "%MP4folder%\%FolderName%"^|find /c "%FolderName%"`) do (
set kaisuu=%%i
)
set /a kaisuu+=1

ren "%filename:~1,-4%.mp4" "%FolderName%#%kaisuu%.mp4" & move /-y "%~dp0%FolderName%#%kaisuu%.mp4" "%MP4folder%\%FolderName%"
mkdir "%TSfolder%\%FolderName%" & ren temp.ts "%TS%#%kaisuu%.ts" & move /-y "%~dp0%TS%#%kaisuu%.ts" "%TSfolder%\%FolderName%"

521 名前:デフォルトの名無しさん mailto:sage [2014/05/14(水) 14:06:05.60 ID:aKf3CI71]
あまりに酷いbatに全員ドン引き
初心者過ぎる質問に更にドン引き

522 名前:デフォルトの名無しさん mailto:sage [2014/05/15(木) 00:07:46.45 ID:N7Q6KVTa]
リネームもしないで移動させるだけなら
全部消して一行書くだけだからなぁ…

523 名前:デフォルトの名無しさん mailto:sage [2014/05/15(木) 02:48:01.95 ID:3O8Jckao]
元のバッチ見てないから分からんが、リネームなしだと最後の行が駄目臭いんだが。
とりま後ろから二行目を
move /-y "%filename:~1,-4%.mp4" "%MP4folder%\%FolderName%"
かな。

524 名前:デフォルトの名無しさん mailto:sage [2014/05/16(金) 02:02:45.87 ID:+KKtBldE]
動画のエンコードバッチで『バッチの中で複数のバッチを実行する』という事をしています

録画終了後、バッチファイル1でリネーム&フォルダBへ移動
フォルダBへ移動後、バッチファイル2を実行しリネームしたファイルを読み込み、エンコード開始

こうするとフォルダBのエンコードバッチが同じフォルダにあるリネームされた動画ファイルを読みに行くのですが
フォルダAに動画ファイルが無いという旨のエラーが出て終了してしまいます。

フォルダBでバッチファイル2に動画を直接ドラッグアンドドロップすると正常に動くのですが
バッチで同じことをしようとする場合には何か特別な事をしなければいけないのでしょうか。

525 名前:デフォルトの名無しさん mailto:sage [2014/05/16(金) 02:26:40.76 ID:+gdxFKDb]
>>524
フォルダAっていうのはいったい何だ。

echo onで実行過程を見ればすぐ問題は解決する気がするが。
どうせカレントディレクトリが違うって程度だろう



526 名前:デフォルトの名無しさん mailto:sage [2014/05/16(金) 03:26:58.99 ID:+KKtBldE]
>>525
記入不足でした、フォルダAは録画ファイルとバッチファイル1が置いてあるフォルダです。
bat弄り始めて2日のビギナーですみません、カレントディレクトリを移すコマンドというのを試してみます。

527 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 08:29:08.67 ID:7hm1D3vf]
録画云々ってことは別ドライブに移動させるとかしてそうな気がするんだけど、
ディレクトリだけじゃなくてドライブも違うのに、カレントドライブ変更し忘れた、とかありそう。
もしそうならCDコマンドに/Dオプション付けてフルパス指定するとかでどうぞ。

528 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 12:13:50.74 ID:BiK471B/]
cd /dはUNCパスには無力だから、自動でネットワークドライブ割り当ててくれる
pushdの方がいいよ

529 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 14:50:29.76 ID:TPyMjFFn]
pushd使ってpopdしないで放置してって何回もやったらドライブどうなるの?

530 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 12:23:35.53 ID:utpaGJWH]
CMD.exeの/Sオプションってどういう時に使うの?
イマイチ使いどころがわからない…

531 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 13:07:54.34 ID:fAlXIwAd]
>>527
>>528
ありがとうございました。おかげさまで無事複数のbatが動くようにできました。

もう一点質問なのですが、batファイルの実行にあたって、フォルダ内の全てのファイルを対象一回ずつ実行する方法はありますでしょうか。。
例えば、エンコード用のbatファイルがある場所で

call c:\B\enc.bat *.ts

これを実行すると、Bフォルダ内にあるTSファイル一つだけがenc.batで実行されます。が複数ある場合はそちらは対象として実行されませんでした。
TSファイルが複数ある場合に1つずつ順番に同処理を行う方法はありますでしょうか。

532 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 13:16:29.16 ID:vCR91VC7]
for %%i in (*.ts) do call c:\B\enc.bat "%%i"

enc.batそのものにファイルを次々にエンコするように書く(実行に引数不要)とかもあり。

533 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 14:26:50.09 ID:fAlXIwAd]
>>532
迅速なご返答ありがとうございます。
こちらの記述でさっそく試してみます。

534 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 15:17:01.31 ID:fAlXIwAd]
>>532
無事TS毎の実行ができました。ありがとうございます。

恐縮なのですが、もう一点質問させてください。
無事エンコード環境が整ったと思ったのですが、一点問題が出てきました。
私の環境だと録画ファイルを別ドライブへコピーして保存しています。

copy c:\録画\*ts c:\TS\

このコピーの際に、別途録画中のファイルがあると、それも一緒にコピーが実行されてしまいbatが固まってしまいました。
録画中(使用中)のファイルはbat処理の対象にしない方法等はありますでしょうか。
宜しくお願い致します。

535 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 15:27:24.31 ID:lJKMM0WQ]
forfiles /d -1とかやればいいんじゃね



536 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 15:39:39.71 ID:vCR91VC7]
>>534
録画ツールで録画終了時に何かさせるって事出来るだろ。
tvrockかedcbか何使ってるか知らんが。

録画終了直後に今録画したばかりのファイルを一つずつ
保存用フォルダに移動させりゃいいだろ。
そうすると録画フォルダには録画中のファイルしか
存在しないことになり、一々区別の必要は無くなる。

537 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 22:44:50.28 ID:v7YGBcxx]
どなたか>>530をお願いします…

538 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 01:54:57.82 ID:jSKasLCc]
実行したいコード文字列をそのまま渡したい時に。

例えば、外部CMD.EXEで実行したいコード中に引用符「"」が含まれている時、
引用符の文字「"」を評価せずに、ただの文字として渡せる。
逆に/sを使わない方法だと、「"」を含む特殊文字を「^」でエスケープする必要がある。
使い方は、評価するコード全体を引用符で括って、/sオプションを併用する。
$ cmd /s /c "%EvalCode%"
外側の引用符を「'」に置き換えてみると理解しやすいかも。

set EvalCode=args args.exe
rem ○:eval:'args args.exe'         & cmd /c %EvalCode%
rem ×:eval:'"args args.exe"'        & cmd /c "%EvalCode%"
rem ○:eval:'args args.exe'         & cmd /s /c "%EvalCode%"
set EvalCode="args args.exe" "args"
rem ×:eval:'args args.exe" "args'    & cmd /c %EvalCode%
rem ○:eval:'"args args.exe" "args"'  & cmd /c "%EvalCode%"
rem ○:eval:'"args args.exe" "args"'  & cmd /s /c "%EvalCode%"
# 間違ってたらスマソ

539 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 08:43:21.34 ID:JTjlvF/q]
このスレでコメント行を # とか... ひっとらえろ!

540 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 09:25:58.57 ID:ZkjZOJnO]
::ヒャー
echo ニゲロー

541 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 10:23:03.20 ID:FKaEHAnJ]
まぁバッチファイルにPower Shellとか書くだけなら書けるしなぁ。スレ主によるとJScript,Perlまで含まれるらしいからなんでもありだろ

542 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 11:01:59.88 ID:t9OqPpuo]
#.exeを作ってPathにいれときゃOk

543 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 22:24:16.50 ID:gR5PAME8]
バッチファイル 埋め込み 言語名とかでやると
幾つかのスクリプトはやり方が出てくるね、もちろんjsもperlも出てくる

544 名前:デフォルトの名無しさん mailto:sage [2014/05/22(木) 15:25:48.42 ID:jxaWow30]
ひっとらえろ→ヒットラーエロ→総統エロ→機密漏えい→きみ、えろい

545 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 06:37:11.07 ID:YzA3p+bh]
cmd.exe /c start "" "myprog.exe"
とほぼ同等の機能を持つ
shellexecute.exe myprog.exe
みたいな標準かsysinternalレベルの準標準?のコマンドラインツールないですか

cmdでもいいんですけど一瞬窓が見えるのがかっこ悪い…



546 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 07:41:59.81 ID:UJEeKjCa]
呼び出し元がバッチファイルならstartの/MINオプション
SysinternalsにもShellRunasとかpsexecがあったような
それか、wscriptで小さいプログラム書くのもいいと思う

あと、そもそもプラットフォームがコンソールになってる実行ファイル
(いわゆるコマンドラインツール)の場合はOS側でコンソール出すぞ?

547 名前:デフォルトの名無しさん mailto:sage [2014/05/27(火) 01:44:45.18 ID:QVZq5peD]
rundll32.exe shell32.dll,ShellExec_RunDLL "myprog.exe" hoge
rundll32.exe url.dll,FileProtocolHandler "myprog.exe"

548 名前:デフォルトの名無しさん [2014/05/27(火) 16:46:59.58 ID:hUdGWYaj]
バッチファイルで、unicode、wchar_t文字列の引数を受け取る方法ってありませんか?

549 名前:デフォルトの名無しさん mailto:sage [2014/05/27(火) 22:22:34.54 ID:0lDTI3dH]
Unicode文字列の引数を使いたいのなら、バッチファイルの代わりにVBScriptファイルを//uオプション付で使うのが無難だと思う

550 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 01:36:04.90 ID:P9eKilM/]
%~z1 でファイルサイズが取得できると思ったけど
サイズがでかいと set /a では計算できなかった。
32ビット(4G)の範囲しか計算できないんだな。

パテ切り用にメガバイトで取得するのが目的だから桁数削るのはいいけど
合計を計算するから CALL %%変数%% じゃ引き継げなくてめんどくさいことに。

setlocal enabledelayedexpansion
set imagesize=0
for %%i in (*.iso) do (
set temp00=%%~zi
set /a imagesize=imagesize+!temp00:~0,-6!
)
set /a imagesize=imagesize+imagesize/20
if %imagesize%==0 (
echo ファイルがありません。
pause >nul
GOTO :QUIT
)
endlocal && set imagesize=%imagesize%

551 名前:デフォルトの名無しさん [2014/05/28(水) 06:57:48.15 ID:hYv9h/w1]
>>549
サンクス
それでやってみます

552 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 13:43:30.39 ID:EKMn2nMr]
個人レベルでの利用なら
for /f "tokens=3" %%I in ('dir /-c /a-d *.iso 2^>nul ^| findstr /v "^[0-9]" ^| find "のファイル"') do echo sum_size=%%I

553 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 18:25:10.93 ID:P9eKilM/]
あ〜!なるほどなるほど!ああ〜!なるほどー!

ところでサイズの計算は
imagesize+imagesize/20 じゃなくて
imagesize-imagesize/22 でした。

554 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 22:07:20.42 ID:lbZqXReU]
以前数値を分割して多数桁の計算をするバッチ例がアップされたような






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<154KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef