- 1 名前:デフォルトの名無しさん [2008/08/04(月) 23:27:23 ]
- 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 【前スレ】 (関連スレは>>2) 【.cmd】 バッチファイルスクリプト %2 【.bat】 pc11.2ch.net/test/read.cgi/tech/1197881068/
- 152 名前:デフォルトの名無しさん [2008/09/05(金) 16:10:32 ]
- PROGRAM filename
というように実行するプログラム PROGRAM がありますが、 どうも filename と同じフォルダからしか実行できないみたいなんです。 そこで、以下を実行するバッチを作りたいと思います。 cd filenameと同じフォルダ PROGRAM filename を実行 cd 元のフォルダ filename と同じフォルダをどうやって取得するのか分からないので、 教えていただけないでしょうか。 または、他によい方法があれば教えていただけないでしょうか。 よろしくお願いいたします。
- 153 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:47:39 ]
- >152
まず基本的なパソコンの使い方を勉強しましょう PC初心者 pc11.2ch.net/pcqa/
- 154 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 17:13:34 ]
- >152
環境変数PATHを設定すれば、どこのディレクトリに居ても呼べるよ 設定の仕方はOSのバージョン毎に微妙に異なるが
- 155 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 17:16:50 ]
- プログラム板でパソコンの使い方を教える馬鹿
- 156 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 17:19:28 ]
- ↑救いようのないバカw
- 157 名前:152 [2008/09/05(金) 17:49:25 ]
- どうも説明が足りなくてすみません。
今回はパスの設定では解決しません。 PROGRAM は filename を処理して、中間ファイルを filename と 同じフォルダに吐いて、さらにそれを処理します。 PROGRAM を filename と同じフォルダで実行しないと、 中間ファイルをどこに吐いたのか分からなくなっちゃうみたいなんですよね。 ちなみに、環境変数を設定して解決するのは、 「PROGRAM のおいてあるフォルダでしかPROGRAMが実行できない」場合で、 「filename のおいてあるフォルダでしかPROGRAMが実行できない」場合では ないですよね? 引き続き、ご返答いただけないでしょうか。
- 158 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 17:50:20 ]
- おじいちゃんに環境変数PATHの意味と設定方法とか
バッチスクリプトについて教えているパソコン教室があるのか気になるところだな
- 159 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 18:05:32 ]
- >157
ああ、そういうことか。こっちこそ早とちりスマソ。 ttp://technet2.microsoft.com/WindowsServer/ja/library/97731e49-ffa3-4918-87fb-5318743f29321041.mspx とかどうよ? filenameがコマンド引数ならそのまま、そうでないならcallと組み合わせればいけるかと。
- 160 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 18:09:35 ]
- >>152
filenameを引数にとるバッチと仮定するとこんな感じかな pushd "%~dp1" PROGRAM "%~1" popd
- 161 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 23:17:58 ]
- set BaseDir=%CD%
cd /d filenameのフォルダ PROGLAMを実行 cd /d %BaseDir%
- 162 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 01:28:08 ]
- set unko="toilet"
- 163 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 09:08:42 ]
- あるテキストファイルから読んだ%%aは常に整数なんですが、これを計算する方法はありますか?
set /a n=%%a * 2 とかできないみたいで
- 164 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 09:41:45 ]
- >>163
%%aってことはテキストの読み込みにfor使ってるんだろうけど それなら計算できてないんじゃなくて参照できてないだけ setlocal ENABLEDELAYEDEXPANSION for /f %%a in (n.txt) do ( set /a n=%%a * 2 echo !n! )
- 165 名前:163 mailto:sage [2008/09/06(土) 10:08:37 ]
- へええええ
希望通りになりました どうもありがとうございます
- 166 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:28:54 ]
- こういうのはechoをonにしてループしてる部分を見れば
遅延展開してない部分が全ループで同じになってるのですぐわかる。
- 167 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 15:08:57 ]
- >>166
遅延云々なんかより先に forの中で変数展開できないのかー としか思わんだろ
- 168 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 15:38:06 ]
- 変数展開できないとは思わんでしょ。
>>164の!n!を%n%にしてると実際にまわるのは%n%が空で set /a n=%%a * 2 echo これのループになるんだから。変数参照してねーよってのがすぐわかる。
- 169 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 23:26:20 ]
- >>168
んー俺ならループ回す前に変数初期化するしなー set n=0 で回したら、ひたすら echo 0 でしょ なんだ、forループじゃ変数いじれないのか? と思ってしまう
- 170 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 23:58:33 ]
- 変数いじれないのかとか思うのは人それぞれだけど、
実際に何が起きてるかは一目瞭然じゃん? >>163は計算が出来ていないと勘違いしたみたいだけど、実際は 変数の参照が出来ていなくて全て定数を参照していたわけだから。
- 171 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:06:57 ]
- そうだそうだ
- 172 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:27:37 ]
- >>169
バカは黙ってろw
- 173 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:30:54 ]
- >>172
お前もなw
- 174 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:35:13 ]
- ん?悔しかったの?
- 175 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:51:19 ]
- 俺は>>169じゃない
- 176 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 02:43:17 ]
- まぁ一筋縄じゃいかないってことには遅かれ早かれ気付くだろうな
- 177 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 07:35:10 ]
- >>174
だっさw
- 178 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 10:43:42 ]
- >>177
お前がなw
- 179 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 11:15:02 ]
- 醜い煽り合いはやめてっ!
- 180 名前:デフォルトの名無しさん [2008/09/07(日) 13:59:33 ]
- ちょっとした軽いアプリケーションを作ったので
連続して実行したいので bat処理したいのですが あまり情報がないので質問させてください [例] hoge.exe goto hoge のように 永遠とhoge.exeを実行したいのですが どうBATファイルを組めばいいのでしょうか?
- 181 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 14:09:45 ]
- :hoge
hoge.exe goto hoge
- 182 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 14:15:23 ]
- アルゴリズウムっす
- 183 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:04:17 ]
- set counter=100
for /L %%C in (1,1,%counter%) do ( hoge.exe )
- 184 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:56:23 ]
- ウイルスか
- 185 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:40:14 ]
- gotoの情報があまりないって考えられなくね?
goto /?で大体分かるだろうし、もうちょい詳しく 知りたければヘルプとサポート見てもいい。 どっちにしろオフラインで解決できるレベルだよ。
- 186 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:41:32 ]
- ウイルスを作るつもりだな
- 187 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:49:30 ]
- >>180
× 永遠と ○ 永遠に ○ 延々と
- 188 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 04:18:27 ]
- この程度で躓く程度じゃろくなウイルスじゃない
- 189 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 06:05:15 ]
- batにファイルをドロップすると、ts2ts.exe(変換プログラム)というファイルに
ドロップしたファイルのフルパスを渡すbatを作ります。 ドロップしたファイルを変数に入力にはどうすればいいですか? ↓以下作ろうと思っているbat set PATH=ドロップしたファイルのパス TS2TS "%PATH%" C:\ドロップしたファイル名.ts pause exit
- 190 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 06:57:02 ]
- こういうことを言ってるの?
TS2TS "%~d1%~p1" "%~nx1" pause exit
- 191 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 09:27:25 ]
- こう言う事だと思う
TS2TS %1 "C:\%~n1.ts" pause exit
- 192 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 10:21:22 ]
- >>189
%0 バッチファイル本体 %1〜%9 バッチファイルに渡した引数(先頭順に) hoge.bat "C:\test\fuga.ts" とやると、 %0=hoge.bat %1="C:\test\fuga.ts" %~1=C:\test\fuga.ts %~d1=C: %~p1=\test\ %~n1=fuga %~x1=.ts 等々 組み合わせて %~dp1=C:\test\ %~nx1=fuga.ts といったような使い方もできる。詳しくはfor /?でも見れ。
- 193 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:46:22 ]
- hoge.exe
%0
- 194 名前:デフォルトの名無しさん [2008/09/08(月) 17:22:58 ]
- 次のようなバッチを作りたいのです。
フォルダを指定する。 フォルダの中のbatファイル名をすべて取得する。 すべてのバッチファイルを順次実行する。 こんなことってbatファイルでできますか? 全くの初心者で、参考になるようなサイトや本、wshのほうがいいよということが ありましたらぜひ教えてください。
- 195 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 17:26:35 ]
- 【質問者の皆様へ】
高機能広汎性発達障害の人が不適切なレスをすることがありますが無視してください。 >>3参照
- 196 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 17:33:18 ]
- >194
それぐらいだったらパソコンの使い方を勉強すればできるよ PC初心者 pc11.2ch.net/pcqa/
- 197 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 17:39:52 ]
- >>194
バッチで出来ます
- 198 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:17:37 ]
- cd /d 指定するフォルダ
for %%i in (*.bat) do %%i
- 199 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:25:01 ]
- ↑お前いい加減 pushd 使えるようになれよw
- 200 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:26:51 ]
- 戻ること考えんでいいのに必要ないだろ。
- 201 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:28:44 ]
- パソコンの使い方の話は板違い
こちらへどうぞ PC初心者 pc11.2ch.net/pcqa/
- 202 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:37:40 ]
- >>161とか笑っちゃうだろ
- 203 名前:デフォルトの名無しさん [2008/09/08(月) 20:53:06 ]
- >>198
ええwこれだけでいけるの?? ちょっとやってみる><
- 204 名前:デフォルトの名無しさん [2008/09/08(月) 20:53:53 ]
- >>196
そうなの?
- 205 名前:デフォルトの名無しさん [2008/09/08(月) 20:57:37 ]
- >>198
なんかたくさんコマンド実行してるみたい。 これじゃだめだよ><
- 206 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:16:47 ]
- >>205
ダメって何がダメなんだよ。 沢山コマンド実行したいんだろ。 先頭に@echo off入れたらおkkkみたいなボケかまさないでくれよ?
- 207 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:21:10 ]
- >>190-192
うまく作成できました。ありがとうございます。
- 208 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:22:12 ]
- >>204
9つ前のレスぐらい読んでください
- 209 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:51:48 ]
- 迷惑メールをメル友の相手と勘違いして
エッチな言葉つきで返信しちゃったんですが大丈夫でしょうか?
- 210 名前:デフォルトの名無しさん [2008/09/08(月) 21:53:35 ]
- ここ変な人しかいないね。
pg以前の問題だ。
- 211 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:54:22 ]
- ただ変なの湧いてきただけだよ
- 212 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 23:13:48 ]
- >>210
> ここ変な人しかいないね。 わざわざ便所のドアを開けて ここウンコしてる人しかいないねというようなもの
- 213 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 08:57:01 ]
- バッチから抜けてプロンプト手動入力に移行したいのにcme.exeが終了してしまうーなんでええ><
> exitで終了すると、コマンドプロンプトまで終了してしまうため、 > コマンドプロンプトを終了せずにバッチを抜けたい場合に使用します。 tooljp.com/bat_qa/6CE3DB69A691678E4925737800579E89.html www.atmarkit.co.jp/fwin2k/operation/command004/command1.html dos.g.hatena.ne.jp/tetrahedrane/20071223/p1
- 214 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 10:30:38 ]
- >>213
バッチファイルをExplorerからダブルクリックで 実行してないか?
- 215 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 10:41:18 ]
- >>214
はい、してます >>213はコマンドプロンプト手動入力時にcallで外部batを呼び出した時の話なんですかね バッチファイルをダブルクリック実行時は不可能ですか?
- 216 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:40:59 ]
- 可能です
- 217 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:43:36 ]
- はじめから cmd /k aaa.bat で起動するか
batの最後にcmd呼んでごまかすか。
- 218 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:44:19 ]
- バッチファイルの最後でcmd.exeを動かしておけばいいんじゃね?w
- 219 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 13:00:09 ]
- Explorerから起こされたときだけ区別しろ
- 220 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 13:01:19 ]
- またパソコンの使い方か
- 221 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 13:11:58 ]
- cmd呼んでごまかすってw
環境変数の引継ぎも出来ないじゃないかと
- 222 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 13:41:05 ]
-
> 環境変数の引継ぎも出来ないじゃないかと
- 223 名前:デフォルトの名無しさん [2008/09/12(金) 01:43:03 ]
- あれあれ?ここスクリプトスレだよな?
- 224 名前:デフォルトの名無しさん [2008/09/12(金) 01:45:08 ]
- さすが能なしFラン共が集うにちゃんねる・・・
せっかくのスレも糞まみれスレになってしまう・・・
- 225 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 01:47:42 ]
- 【キーワード抽出】
対象スレ: 【.cmd】 バッチファイルスクリプト %3 【.bat】 キーワード: 糞 37 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/10(日) 01:08:22 >>20-23みたいな糞バッチ押し付けられるよりはまし 62 名前:デフォルトの名無しさん[] 投稿日:2008/08/14(木) 02:42:28 >>56 が貼らなければあとは荒らしという糞スレですね 224 名前:デフォルトの名無しさん[] 投稿日:2008/09/12(金) 01:45:08 さすが能なしFラン共が集うにちゃんねる・・・ せっかくのスレも糞まみれスレになってしまう・・・ 抽出レス数:3
- 226 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 11:33:07 ]
- >>225
抽出厨うぜぇ
- 227 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 12:07:19 ]
- 【キーワード抽出】
対象スレ: 【.cmd】 バッチファイルスクリプト %3 【.bat】 キーワード: うぜぇ 226 デフォルトの名無しさん [sage] 2008/09/13(土) 11:33:07 >>225 抽出厨うぜぇ 抽出レス数:1
- 228 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 13:51:09 ]
- 専ブラデビューおめでとう
- 229 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 01:35:15 ]
- バッチファイルの最後で
start /b cmd.exe
- 230 名前:デフォルトの名無しさん [2008/09/15(月) 15:34:05 ]
- コマンドの結果を変数に入れたいのですが方法はありませんでしょうか?
dir `hoge %*` みたいなことがやりたいのですが、`hoge %*`を展開してくれません。 hoge %*の結果をどこかに入れて、 RESULT = hoge %* dir %RESULT% みたいにできればよいのですが・・・
- 231 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 15:39:36 ]
- >>230
for /? setの拡張でもできればわかりやすいのにね。
- 232 名前:デフォルトの名無しさん [2008/09/15(月) 15:47:26 ]
- ありがとう。できました。
for /f "usebackq tokens=*" %%i in (`hoge %*`) do @set RESULT=%%i echo %RESULT% 面倒くさくてワロタ バッチファイル死ね
- 233 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 16:04:47 ]
- doskey setx=for $*
- 234 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 16:06:59 ]
- いい加減PowerShell使えよ
- 235 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 16:10:48 ]
- 無理矢理拡張してきたから実用性は低い
- 236 名前:デフォルトの名無しさん [2008/09/15(月) 16:10:59 ]
- >>234
インスコしないと動かないのが非常に面倒 それなら、wshつかう
- 237 名前:デフォルトの名無しさん [2008/09/15(月) 18:26:44 ]
- >>234
デフォで入ってないなんて問題外。 例えばPowerShellを実務で使うときなんて言ってる? 「コマンドの結果を変数に入れたいのでPowerShellインスコしますね」、ってか? 返答は漏れなく罵倒語だろうな。
- 238 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 18:50:05 ]
- >>237
なんでも業務に結びつけなさんな。そんなの人によるでしょ。 俺はPowerShellは使ってないけど、cygwinのインストール許可とってるよ。 まあPowerShellの時代はあと3年くらいでやってくるんじゃね?
- 239 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 19:23:40 ]
- スタバはPowerShell使ってるみたいだな
- 240 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 19:31:10 ]
- 何に?
- 241 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 23:36:20 ]
- batファイルでHTMLを出力しようとした場合<HTML>>>****.txt
となりbatが動かないのですがどうすればいいでしょうか。 あと、FFMPEGをbatで動かして動画も同時に変換してるんだけど、ファイル名がどうしても出力できない。
- 242 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 23:45:20 ]
- 勘違いだった
- 243 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 23:56:27 ]
- ^<^>とやればエスケープできる
そのままだとリダイレクトされてしまう
- 244 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 15:11:05 ]
- PowerShellはWin2000をサポート外にすると言う大罪を犯した
- 245 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 19:19:01 ]
- .net2.0だからアセンブリは動く
フロントエンド拾ってくるか作るかすればいい
- 246 名前:241 mailto:sage [2008/09/16(火) 21:19:55 ]
- >>243 有難うございます。
一応全部解決して、プログラムができたので実際に動作させてみたのですけれども、 cmd.exe画面を出した状態(フォアグラウンド?)でやると正常に動くんですが、 他のファイルからbatファイルをバックグラウンドで呼び出したときに処理が正常に行われません。 強制フォアグラウンドにするとか設定ないんでしょうかね・・・・
- 247 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 21:24:45 ]
- start
- 248 名前:246 mailto:sage [2008/09/16(火) 21:28:56 ]
- ごめん・・・・・
環境変数をフルパスに変えたら直った(´・ω・`)
- 249 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:42:19 ]
- a.dat {3kb}
b.txt {20kb} c.dat {200kb} d.exe {5kb} など、複数ファイルがあるフォルダで100kb以下のdatファイルがあるときのみそのファイルを削除し、 エラーです。とtxtファイルに出力したいのですがどうすればいいですか。
- 250 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:51:24 ]
- 質問者は>>3を読んでお待ちください。
- 251 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:53:00 ]
- 日本人か?
- 252 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:05:01 ]
- >>1-10 くらいを読んで自己努力
|

|