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


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

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



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

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

【.cmd】 バッチファイルスクリプト %5 【.bat】
pc12.2ch.net/test/read.cgi/tech/1242268171/
【.cmd】 バッチファイルスクリプト %4 【.bat】
pc12.2ch.net/test/read.cgi/tech/1229955189/
【.cmd】 バッチファイルスクリプト %3 【.bat】
pc11.2ch.net/test/read.cgi/tech/1217860043/
【.cmd】 バッチファイルスクリプト %2 【.bat】
pc12.2ch.net/test/read.cgi/tech/1197881068/
【.cmd】 バッチファイルスクリプト %1 【.bat】
pc11.2ch.net/test/read.cgi/tech/1178281991/

330 名前:デフォルトの名無しさん mailto:sage [2011/04/07(木) 11:24:10.03 ]
んなこたぁ分かってるんだよ
ちゃんと訂正しなよレス欲しいんなら

@echo off
setlocal enabledelayedexpansion
for /F "delims=" %%f in ('dir /b *.txt') do (
set "a=%%f"
set "a=!a:%%=%%%%!"
call :main "!a!"
)
pause
endlocal
goto :EOF
:main
set "fname=%~n1"
echo "!fname!"


331 名前:デフォルトの名無しさん mailto:sage [2011/04/07(木) 12:04:03.11 ]
>>330
すまんかった。
そしてサンクス

332 名前:デフォルトの名無しさん mailto:sage [2011/04/07(木) 12:14:37.03 ]
ちなみに上の奴は ! の対策してないから
a!b!c.txt とかが ac になったり

333 名前:デフォルトの名無しさん mailto:sage [2011/04/07(木) 17:00:19.67 ]
@echo off
for /f "delims=" %%f in ('dir /b *.txt') do set "a=%%f" & call :b
pause & exit
:b
setlocal enabledelayedexpansion
set "a=!a:%%=%%%%!"
endlocal & call :main "%a%"
goto :eof
:main
set "fname=%~n1"
echo "%fname%"

"!" に対応したところで完全じゃない(>>278 とか)

334 名前:デフォルトの名無しさん mailto:sage [2011/04/07(木) 17:07:49.53 ]
>>333
やりおる

335 名前:デフォルトの名無しさん mailto:sage [2011/04/07(木) 17:18:42.38 ]
^も^^になるな

336 名前:デフォルトの名無しさん mailto:sage [2011/04/07(木) 23:35:09.90 ]
やりたくないな
そこまでしてなにがしたいんだか

337 名前:デフォルトの名無しさん [2011/04/08(金) 00:27:12.19 ]
>>336
小学生は早く寝ろ

338 名前:デフォルトの名無しさん mailto:sage [2011/04/08(金) 08:08:51.13 ]
>>335はmain側で対応するしかなさそう
echo "%fname:^^=^%"



339 名前:デフォルトの名無しさん mailto:sage [2011/04/08(金) 19:41:11.92 ]
DOSでchcp 65001とutf-8で表示できるのですが、毎回入力するのが面倒なのでbatファイルにしたいのですが
フォルダの位置はc:\code\2011\にしたいので
chcp 65001
cd c:\code\2011\
と書いてbatファイルにしたのですが画面が表示されてすぐきえてしまいます
どのようにしたら普通にDOSを立ち上げたときの状態に上のコマンドを実行した状態にできるのでしょうか?

340 名前:デフォルトの名無しさん mailto:sage [2011/04/08(金) 20:39:41.20 ]
@echo off
cd c:\code\2011\
cmd /k chcp 65001

341 名前:デフォルトの名無しさん mailto:sage [2011/04/08(金) 21:40:22.49 ]
cmd /k chcp 65001
のショートカットにすればよい

342 名前:デフォルトの名無しさん mailto:sage [2011/04/08(金) 22:17:39.23 ]
>>341
すれ違い

343 名前:デフォルトの名無しさん mailto:sage [2011/04/08(金) 22:47:52.49 ]
ありがとうございます
使わせていただきます

344 名前:デフォルトの名無しさん mailto:sage [2011/04/10(日) 11:01:48.83 ]
バッチファイルに放り込まれたファイルの
パスを拡張子だけ抜いて指定場所に書き込みたいのですが、
\の処理がうまくいきません どう記述するのが正しいのでしょうか?
perl -Mencoding=cp932 -pe s/"Filedpn"/"%~d1\%~p1\%~n1"/ template.avs > "%~n1.avs"

345 名前:デフォルトの名無しさん mailto:sage [2011/04/10(日) 11:18:52.68 ]
バッチの問題じゃない。perlが`\'を解釈している。

346 名前:デフォルトの名無しさん mailto:sage [2011/04/10(日) 11:20:42.05 ]
>>345
おおう・・・ 実はperlのスレから誘導されてきたんです
どうしたものか・・・

347 名前:デフォルトの名無しさん mailto:sage [2011/04/10(日) 11:55:33.60 ]
お前、脳みそ無いの?

\ → \\

348 名前:デフォルトの名無しさん mailto:sage [2011/04/10(日) 12:11:07.50 ]
すれ違い



349 名前:デフォルトの名無しさん mailto:sage [2011/04/10(日) 12:36:51.40 ]
>>344
単純に"Filedpn" → "%~d1%~p1%~n1" なら、

"s/\"Filedpn\"/\"%%~d1%%~p1%%~n1\"/"

350 名前:デフォルトの名無しさん mailto:sage [2011/04/12(火) 22:20:20.51 ]
streamの有無の判定は?
if exist file:stream (echo Y) else echo N
うまく行かん

351 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 19:48:52.78 ]
■a.bat
file=sample_2011_04_01.txt

■b.bat

a.batに変数fileにファイル名を格納した場合
b.batでa.batの変数を利用するにはb.batでどのように書くのでしょうか?

352 名前:デフォルトの名無しさん mailto:sage [2011/04/13(水) 21:22:06.66 ]
call a.bat
echo %file%

353 名前:デフォルトの名無しさん [2011/04/16(土) 22:28:42.25 ]
コマンドプロンプトで実行するとコマンドプロンプトに文字列を出力するプログラムがあります

ファイル名を指定して実行で
cmd /k test.exe
としたのですが、batファイルにpauseを書いたようにしてプログラムの出力が終わったらキーボードをワンプッシュでコマンドプロンプトを閉じたいのですが無理でしょうか?
batファイルでないとできませんでしょうか?


354 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 22:31:14.10 ]
cmd /k test.exe&pause

355 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 22:51:39.71 ]
cmd /c test.exe & pause

356 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 23:13:22.46 ]
cmd /k test.exe & pause & exit


357 名前:デフォルトの名無しさん [2011/04/16(土) 23:27:57.43 ]
完璧です!ありがとうございます!

358 名前:デフォルトの名無しさん mailto:sage [2011/04/16(土) 23:48:50.05 ]
if exist 357 (echo さようなら) else (echo もういなくね?)




359 名前:デフォルトの名無しさん [2011/04/17(日) 04:29:54.78 ]
すみません、動画エンコードソフトの「HandBreak」のコマンドライン実行で、
以下のサイトのバッチを、サブフォルダ以下にも再帰的に実行させることはできますか?

bluemoonjp.blog96.fc2.com/blog-entry-22.html

出力先のフォルダに、ソースフォルダのディレクトリ構造を再現し、エンコードをおこないたいです。
(出力先の指定ディレクトリが存在しない場合は、HandBreak側で生成されます)

できれば、出力先フォルダでのファイル有無を見て、存在する場合はパスしたいです。
バッチファイルでそこまでって無理でしょうか。

360 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 08:52:44.95 ]
>>359
出来なくはないけどperlとかpython使った方が楽じゃね?

361 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 09:52:32.69 ]
`dir /s /b /a:d`取り込めばいいんじゃねーの

362 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 11:25:41.91 ]
Haskell推奨

363 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 15:56:06.34 ]
>>359
for /dつかえば

364 名前:デフォルトの名無しさん [2011/04/17(日) 16:14:58.67 ]
ファイル名を指定して実行でcmd /k d:でDドライブに移動できますが
D:\2010\test\に移動したいのですが
cmd /k d: cd 2010\testとやってもD:\のままになってしまいます
無理でしょうか?

365 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 16:21:50.10 ]
cd /?

366 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 16:22:25.25 ]
>>364
出来なくはないけどperlとかpython使った方が楽じゃね

367 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 20:14:51.69 ]
cd /d

368 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 20:37:42.74 ]
pushd



369 名前:デフォルトの名無しさん [2011/04/17(日) 20:57:56.96 ]
プロンプトを立ち上げた状態で cd /dは効くのですが
ファイル名を指定して実行でcmd /k d: cd /d 2010\testとやってもD:\のままになります
使い方が間違ってるのでしょうか?

370 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 21:22:41.64 ]
cmd /k d: && 2010\test

371 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 22:05:57.33 ]
>>369
d: cd /d …
これで一つのコマンドだろ。そんなコマンド無いから
本来エラーで何も起きなくてもおかしくないが
偶然、d: の後が無視される仕様だからだけ動いてただけ。

372 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 00:16:02.42 ]
ありがとうございます

373 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 14:13:06.13 ]
どういたしまして

374 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 23:01:57.11 ]
ちょっとした疑問なのですが%~dp0や%~dpn0などの特殊な変数?はどこかにドキュメントはないものでしょうか?
helpコマンドを見てみましたが見つかりませんでした
%~0で引数の0番目(ここではバッチファイル名)、dはドライブ、pはディレクトリ、nはファイル名という部分的なパスを取得するというのは実行結果からわかるのですが、
こういったことが書いてあるヘルプはないものかと思いまして


375 名前:デフォルトの名無しさん mailto:sage [2011/04/21(木) 23:48:03.20 ]
forコマンドのヘルプに載ってるよ

376 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 00:32:07.89 ]
call/?だろ

377 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 01:16:31.09 ]
ありがとうございます

378 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 15:10:34.67 ]
どういたしまして



379 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 09:14:59.50 ]
明示的に環境引数の変化を受け継ぎたい時以外は
call foo.bat
より
start /wait cmd.exe /c foo.bat
の方が影響受けづらくていいな。exit で親まで巻き添えにされたりすることもないし。

380 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 11:38:51.26 ]
setlocal

if "%a"=="a" (call :temp_a) else (call :temp_b)
goto eof

:temp_a
echo a
exit /b

:temp_b
echo_b
exit /b

:eof
endlocal

381 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 11:43:56.35 ]
そういうのをうだうだやらなくて済むって話

382 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 12:51:52.37 ]
set aa=aa
start /wait cmd.exe /c foo.bat aa
echo %aa%

-foo.bat
echo %*
echo %aa%
set aa=bb

383 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 16:27:36.12 ]
>>379
惜しいな
cmd.exe /c foo.bat
でいいよ

384 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 19:03:33.39 ]
>>380
関係無いけど goto :eof と goto eof 使い分けるのは初心者イジメだなw

385 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 14:11:26.61 ]
>384
関係あるよ
>>380は単なる初心者だろ
goto :eofを知らない だからexit/bを使う
endlocalは不要を知らない

386 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 14:32:45.57 ]
>>385()


387 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 16:21:43.93 ]
eofがどうとか言う以前に突っ込み所多すぎだろ。

動かないバッチ前にして何をグダグダやってんだか。

388 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 16:26:42.93 ]
>>387
何をグダグダやってんだか。



389 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 16:37:19.77 ]
>>387
ほれ ぐだぐだ

390 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 17:06:34.80 ]
endlocalは不要を知らない
endlocalは不要を知らない
endlocalは不要を知らない

391 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 18:56:16.13 ]
何をグダグダやってんだか。
何をグダグダやってんだか。
何をグダグダやってんだか。

392 名前:デフォルトの名無しさん [2011/04/26(火) 19:33:02.70 ]
フォルダにあるファイルの名前から数字とそれ以外を抜き出して、
違う名前にリネームしていきたいのですが、

g001hoge → "g" "001" "hoge" に分離 → "ghoge001" を生成
g002hoge → "g" "002" "hoge" に分離 → "ghoge002" を生成
g003hoge → "g" "003" "hoge" に分離 → "ghoge003" を生成

どう書けばよいでしょうか?

393 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 19:42:23.83 ]
set/?

394 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 21:30:48.22 ]
ヒントじゃなく答えを欲しがる人にはバッチや sed 系の何かより、
むしろ Flexible Renamer を勧めたい。

395 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 10:50:32.23 ]
batファイルでxmlを操作するのって不可能ですか?

<top>
<tax>1.05</tax>
<item name="たまご" price="250">
</top>

396 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 10:58:54.60 ]
xslプロセッサかe4x使えよ。

397 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 05:46:52.36 ]
>>395
不可能じゃないからやれば?

398 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:00:52.19 ]
どうやるんdすか?



399 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 13:31:46.32 ]
毎日サーバからzipをダウンロードするのですがzipの中で特定の拡張子のファイルのみをbatファイルで一発で展開したいと思います
7Zipを使ってます
これをbatファイルに保存して実行するとtest.zipの拡張子txtのファイルを全て展開します
これを1回のコマンドでtxtだけでなくpdfもにも対応するにはどのように書いたらよいのでしょうか?

C:\7-Zip\7z.exe e test.zip -oC:\hozon .txt -r

.(txt|pdf)みたいに書ければよいのですが・・・

400 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 13:41:38.28 ]
>>399
2回実行するか
マニュアルよくよんでみるか
どうしても1回って意味不明な縛りがよくわかんね

401 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 14:34:18.77 ]
2回に分けると2度zipにアクセスするのが無駄なので1回でtxtとpdfファイルを取り出したいのです
マニュアルには複数拡張子は書いてないので出来ませんよね

402 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 14:58:49.64 ]
そもそも特に拡張子のことなんて書いてないだろ
それっぽいのを拡張子だと判断するのは勝手だが。

拡張子という言葉を頭から削除してマニュアルもっと見ろ

403 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 15:03:20.73 ]
>2回に分けると2度zipにアクセスするのが無駄なので
そこまで考えるほうが無駄だろ?下手の考え休むに似たりってなw

404 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 15:31:07.67 ]
C:\7-Zip\7z.exe e test.zip -oC:\hozon .txt -rのところの.txtに正規表現で*.(txt|pdf)も指定できれば良いのですよ


405 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 15:37:19.88 ]
と思ったら解決できました

406 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 15:38:24.03 ]
それはそれはよろしいですね! では、よろしく!

407 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 15:40:42.81 ]
どうでもいいが
*.(txt|pdf)
というのは正規表現じゃないと思うのだが…

408 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 15:59:25.68 ]
ワイルドカードでもない



409 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 17:24:50.56 ]
だが言いたいことは分かる

410 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 19:31:59.45 ]
じゃあ、読んで字の如く、ワイルド表現ちうことで

411 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 17:58:41.82 ]
バッチファイルの中からMSのsdkに付属のbin\setenv.cmdを呼び出して、環境変数を設定しようと

call "c:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\SetEnv.cmd" /Release /xp
と書いたらsetenv.cmdの中に
SET Path=%VCTools%;%VSTools%;%SdkTools%;%FxTools%;!Path!
などと書かれていて、最後の!Path!(オリジナルのPATHでなく)がそのまま残ってしまいます。

!が%と見なされるような呪文があるのでしょうか?

412 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 18:13:13.56 ]
>>411ですが、自己解決しました。

413 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 01:45:29.85 ]
> !が%と見なされるような呪文があるのでしょうか?

そういう呪文、ありますなぁ…

414 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 02:43:47.53 ]
せっとろうかるでぃせいぶるでぃれいどいくすぱんしょん

415 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 08:36:32.44 ]
EnableDelayedExpansion

って書いて欲しいなあ、とよく思う…
大文字だけとか小文字だけだと読みにくいw

416 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 12:05:41.98 ]
そもそもつなげて書くのが間違い。
ちゃんとスペース空けろ!

417 名前:デフォルトの名無しさん [2011/05/08(日) 16:07:11.53 ]
C:\test\2010\の中にsample_xxx.zipというファイルがあります
このこのファイル名のxxxのx部分には数字と . 半角英字が入ります
この規則のファイルはフォルダの中に1つしか存在しません
このファイル名を取得して変数に入れる方法はございませんでしょうか?


想定するファイル名
sample_1.0.5.zip
sample_1.12.3.zip
sample_2.0.zip
sample_2.0b1.zip


418 名前:デフォルトの名無しさん [2011/05/08(日) 16:14:43.80 ]
set dir = dir sample_*.zip
echo %dir%
で取れるのかなと思ったのですが無理でした



419 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 16:18:33.11 ]
for %f in (sample_*.zip) do set dir=%f

420 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 16:59:08.76 ]
>>419
ありがとうございます

421 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 18:47:26.85 ]
$dir = dir sample_*.zip
echo $dir


422 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 20:18:54.40 ]
>>421
誰もそんな事は聞いてないの。

423 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 12:11:48.86 ]
batファイルでゲームって作れるの?まあ作ってる人いないだろうけど

424 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 13:25:22.39 ]
>>423
batにスクリプト言語埋め込んで、ならやったことあるが
バッチファイルの標準添付コマンドのみで
埋め込みJSとかも禁止、とかになると流石にやる気しないw

425 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 13:27:11.97 ]
…あ、でも数当てゲームぐらいなら作ったことあるような気もする
これをゲームの内に入れても良いなら「ある」ことになるかなw

426 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 17:29:12.48 ]
ディレクトリの存在確認で
if exist c:\tmp\nul ...
というテクニックがありますが、名前に空白を含むディレクトリの確認をしようと
ダブルクォートでくくったら正しく動きませんでした。

調べてみるとc:\tmpというディレクトリが存在するとき
1 if exist c:\tmp
2 if exist c:\tmp\nul
3 if exist "c:\tmp'
4 if exist "c:\tmp\nul"
で4だけifが成立しません。今回はcd出来ることで確認したけれど、後学の
ためにif existで正しくディレクトリの存在確認をする記法を教えてください。
OSはXpSP3です。

427 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 17:35:13.48 ]
"c:\tmp\"

428 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 18:54:42.75 ]
ttp://support.microsoft.com/kb/65994/ja



429 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 18:56:31.05 ]
ttp://support.microsoft.com/kb/77361/ja

430 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 21:16:46.54 ]
>>427でOKでした。NTFSなので>>428-429によるとできるはずなのにバグですかね。
でも、ファイルシステムの違いで出来ない場合もあるんですね。まんどうだなあ。






[ 続きを読む ] / [ 携帯版 ]

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

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