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


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

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



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

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

【.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/

300 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 23:38:48.90 ]
送信するメッセージを入力してください。メッセージの入力を終了するには、改行してか
ら、Ctrl+Z キー、Enter キーを押します。

^Z
セッション名の取得エラー 1702

301 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 23:55:48.28 ]
msg * /time:60-現在の秒数 sleep


302 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:18:03.47 ]
セッション名の取得エラー 1702

303 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:34:43.64 ]
:loop
if not 60-現在の秒数 == 00 goto loop
タスクを実行
:loop2
if 60-現在の秒数 == 00 goto loop2
goto loop


304 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:46:53.69 ]
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。
コマンドの構文が誤っています。

305 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:48:02.09 ]
役立たずばかりだな

306 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:50:05.81 ]
おまえの役に立ってたまるかぼけ

307 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 01:00:26.80 ]
おれんちはsleepあるからいいよw

308 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 19:30:14.31 ]
1秒スリープ
echo WScript.Sleep(1000) >sleep.vbs
cscript //Nologo sleep.vbs



309 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 20:33:07.77 ]
>>294
>>296
osのバージョンによっては入っていないんだな
>>301
セッション名の取得エラーって知っているか?
>>303
アホか負担が高すぎる
>>307
何も解決してない答えだな
汎用性がないわ
>>308
これは使えるな

310 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 23:24:06.28 ]
厳密じゃなくて適当に1秒待ちで良いなら
ping -n 2 127.0.0.1 1>nul

OS制限はまず無いし

311 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 00:06:16.93 ]
start /wait "" mshta vbscript:Execute("GetObject(""winmgmts:{impersonationLevel=impersonate}"").
ExecNotificationQuery(""select * from __InstanceModificationEvent
where TargetInstance isa 'Win32_LocalTime'
and TargetInstance.Minute = 0 and TargetInstance.Second = 0"").NextEvent:Close")

312 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 00:15:53.25 ]
pingは環境によってFWでブロックされて止まってしまう

313 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 00:24:34.55 ]
アホには>>303がちょうどよいw

314 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 00:41:31.13 ]
mshta javascript:setTimeout('close()',10000)

315 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 10:04:22.81 ]
そもそも最初は、「毎時00分に」なのに「00秒に」と誤解した上に、途中から「1秒待ち」の話になってる。
へぼプログラマがバグを作りこむ理由の一端がわかった気がする。

316 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 15:37:58.48 ]
応用のできないアホはスルーで

317 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 15:40:21.60 ]
msまで追求するのが漢道

318 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 16:12:00.10 ]
>>315
へぼプログラマがバグを作りこむ理由の一端がわかった気がする。



319 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 17:19:17.93 ]
>>316
応用? 00分の検出と、1秒待ちってぜんぜん違う機能だぞ。

どう応用するのか、見せてもらえるかな?

320 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 17:26:48.84 ]
>>319
なんでその2つを同じ階層で考える?

321 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 17:32:09.01 ]
応用のできないアホはスルーで

322 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 17:36:30.86 ]
まぁまぁ落ち着けよお前ら
一番悪いのは>>303なんだから

323 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 17:50:30.16 ]
>>320
え゛っ、応用じゃないの? (w

応用見せてみと言うと階層が違うとか、なんだかねぇ。

324 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:00:38.70 ]
おい単芝vipに帰れよ

325 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:21:54.10 ]
HP機だと
c:\hp\bin\sleep.exe
が使えるよ

326 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:25:01.24 ]
>>324
お前が帰れよ、つーかででくんな。

327 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:32:56.02 ]
powershell start-sleep

328 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:42:28.32 ]
'powershell' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。



329 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:43:43.94 ]
'c:\hp\bin\sleep.exe' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。


330 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 19:01:18.78 ]
hpの事なんて聞いてねえよ!

331 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 19:05:48.99 ]
おまえなんかに言ってないよw
自我肥大するんじゃねーよw

332 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 23:10:10.73 ]
自我肥大はスルーで

333 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 23:18:48.73 ]
pause /t:n

334 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 23:59:17.74 ]
>>292
やったな、おい!大漁じゃねーか!雑魚ばっかりだけど!

335 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 00:35:05.56 ]
これってそんなに難しい質問なのか

336 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 00:45:48.84 ]
応用のできないアホには

337 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 03:33:48.01 ]
choice /t 10 /d y

338 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 03:47:51.65 ]
diskpart /t 15



339 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 05:32:44.27 ]
>>333
続行するには何かキーを押してください . . .
>>337
'choice' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
>>338
DiskPart はパラメータを処理できませんでした。
詳細については、'diskpart /?' を使用してください。

340 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 09:26:48.83 ]
cmd.exe組み込みコマンドと同名のプログラムがPATH中に存在するとき、
組み込みコマンドを指定する方法はありますが?
mkdirはmdに変更することで逃げられますが、この方法が使えないとき
はどうすればいいでしょうか?

341 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 13:42:17.35 ]
似たような機能のtoolを入れる

342 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 14:41:11.23 ]
>>340
うそこけ 組み込み優先でないってか?

343 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 16:03:37.77 ]
>>341
それすると何がどうなるって?ばかか

344 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 16:30:39.06 ]
>>340
逆ならいくらでもあるが

345 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 16:39:27.54 ]
>>340
setlocal
set path=
組み込みコマンド
endlocal

346 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 17:28:38.33 ]
>>342
うーん。試してみたらコマンドプロンプトは組み込み優先でした。
実はnmakefileの中だったのです。>>345を採用することにしますた。

set path= & 組み込みコマンド

347 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 17:35:24.19 ]
最初からそう言え
cmd /c 組み込みコマンド

348 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 22:14:14.00 ]
timeout /t 10



349 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 06:18:57.26 ]
NDWord: /t

350 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 10:59:35.06 ]
'NDWord:' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

351 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 12:48:26.59 ]
整合性レベルの低で起動する簡単な方法ないですか?

352 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 12:57:18.84 ]
%~tIは更新日時のようですが、作成日時は取れないんですか?

353 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 13:30:43.72 ]
start /low

354 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 13:56:05.67 ]
for /f "usebackq tokens=1,2*" %i in (`dir /tc "%~f1"^|find "%~nx1"`) do (set a=%i%j&call echo %a%)

355 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 14:04:16.98 ]
%i%jじゃ繋がっちゃうだろ

356 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 21:16:09.49 ]
"%~nx1"が"ファイル"だとだめだろ

357 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 21:24:25.23 ]
"eol= "ってやればうまく行きそうだが、行かん。遺憾だ

358 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 21:39:46.47 ]
eol=の仕様は謎だな



359 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 21:46:13.61 ]
findstr /r /c:"^[^ ].*%~nx1"

360 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 21:59:25.95 ]
for /f "usebackq tokens=1,2*" %i in (`dir /tc "%~f1"^|find "%~nx1"`) do (if not defined a set a=%i %j&call echo %a%)

361 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 22:05:59.46 ]
だからー "%~nx1"が"ディレクトリ"だとだめだろ

362 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 22:08:54.13 ]
find "/"
がええかも

363 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 23:34:25.37 ]
for eolでggったら"delims= eol= "でいいみたいね

364 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 01:56:38.52 ]
そのじゃディレクトリの作成日時は取れんな

365 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 12:30:43.59 ]
start cmd /c pause
とすれば、別プロセスで開始したコマンドの終了を待たずに次に進めるけど、
(start cmd /c pause & start cmd /c pause) | sort
などとパイプすると、startしたアプリをすべて終了するまで次に進まなくなってしまうのを回避する方法ありません?
(start cmd /c pause & start cmd /c pause) > hoge.txt
リダイレクトなら普通に次に進めるのですが…

366 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 16:12:04.51 ]
意味不明だな
(start cmd /c pause & start cmd /c pause) | sort
で止まるのは当然だろw何がしたい?
start cmd /c "pause | sort"
とか?


367 名前:365 mailto:sage [2011/11/23(水) 17:35:31.29 ]
>>366
確かにそのスクリプトじゃ何がしたいのか意味不明だけど、ようは、

[a.cmd]
Echo 処理1開始
Rem 処理1
Echo 処理2開始
Rem 処理2
Echo 処理3開始
start "" "重い処理3cmd"
Echo 処理4開始
start "" "重い処理.4cmd"
pause
exit /b

ってのがあって、そのスクリプトに対し、

call a.cmd | tee "log.log"

的なことをしたのです。
a.cmd 内では、pause まで進むのにもかかわらず、
重い処理3cmd, 重い処理4cmd が修了するまで、
call a.cmd | tee "log.log"
の次に進みません。

call a.cmd
だけなら問題なく次に進むのだけど、何でそうなるのかが自分にはよくわからんのです。

368 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 18:33:00.23 ]
こういうこと?
ttp://scripting.cocolog-nifty.com/blog/2007/09/messagebox_5566.html



369 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 18:45:04.00 ]
>ProcessStartInfo.UseShellExecute=trueでプロセスを起こすと、
>ファイルハンドルを引き継がないようです。
ってことは
ショートカット作って
start "" "重い処理3cmd.lnk"
だな

370 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 21:55:29.35 ]
rundll32.exe url.dll,FileProtocolHandler "重い処理3.cmd"
でもええんじゃね

371 名前:365 mailto:sage [2011/11/23(水) 22:04:00.88 ]
>>368-369
ありがとうございます!!

> ttp://scripting.cocolog-nifty.com/blog/2007/09/messagebox_5566.html
> どうもパイプの前のプロセスにパイプのハンドルの複製が残っているのでは?
なるほど…

ショートカットで、ばっちし うまく動きました。

372 名前:365 mailto:sage [2011/11/23(水) 22:12:02.17 ]
>>370
なるほど!
手っ取り早くてイイですね!

373 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 20:05:50.79 ]
cmd.exeのバグだな

374 名前:デフォルトの名無しさん mailto:sge [2011/11/24(木) 23:51:22.85 ]
そうだな

375 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 19:02:04.82 ]
hou

窓の杜 - 【REVIEW】UnixのコマンドをWindowsのコマンドプロンプトで利用可能にする「Gow」
www.forest.impress.co.jp/docs/review/20111206_496043.html

376 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 21:04:34.69 ]
コマンドプロンプトで使えても、複数行の引数とかで困りそうな…

377 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 23:05:30.91 ]
お願いします。
Windows7です。

host.txtが

<ホスト名A>,<IPアドレス>
<ホスト名B>,<IPアドレス>

というようなパターンで記載されております。

キーボード入力→入力を変数に格納(%host%)。

・変数%host%と一致する行を、host.txtの1列目から探す、見つかったら一致する行の2列目を変数ipに格納

という処理を行いたいのですが、まったく方法が思いつきません。
お知恵を拝借いたしたく。

よろしくお願いします。

378 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 23:30:42.76 ]
set /p host="> "
for /f "tokens=1,* delims=," %%a in (host.txt) do (
if "%%a" == "%host%" set "ip=%%b"
)
echo %ip%



379 名前:377 mailto:sage [2011/12/15(木) 00:03:14.03 ]
>>378
勉強になります。そのまま使わせていただきます。
ありがとうございます。



380 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 08:11:06.17 ]
Windows2008使用です。
バッチ上から、システム環境変数(本来、マイコンピュータ右クリックでたどっていって編集するもの)を編集したいです。

reg add で編集(追加)はできるんですが、同じバッチ内(コマンドプロンプト内)では、反映されてません。
これを反映させられるようにしたいです。
pathを編集したいわけじゃないので、フルパスにしたからといって解決するものでもないです。

どなたかご存知の方いらっしゃいましたらご教授お願いします。

381 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 09:34:10.72 ]
>set /?

382 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 09:58:29.01 ]
馬鹿登場

383 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 10:26:35.05 ]
reg addしたものと同じものをsetしなおすのが手っ取り早いとは思うけどな。

start "" cmd.exe /c "%~0" %*

とかやって独立したプロセス立ち上げると環境変数って新規のが使われるんだっけ?
そうなったら今度はローカルで変更した環境変数まで消えちゃうんだけど。

384 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 14:42:17.97 ]
setx/?

385 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 17:15:10.74 ]
'setx' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

386 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 17:59:03.37 ]
setx.exeはServer 2003以降、Vista以降で有効の模様。2000/XPでは使えない。

387 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 18:26:27.91 ]
2000/XPは使わない。

388 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:08:09.34 ]
すいません以前ここでcdは使うな。代わりに○○を使えって教わったのですがそのコマンドが忘れました
どなたか教えてください



389 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:24:55.46 ]
>>252-253 か?
別にcdでもいいよ

390 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:41:51.36 ]
cd /d
かもよ

391 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:58:44.93 ]
pushdとか?

392 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 12:45:07.22 ]
>>389-391
先生方ありがとうございます
それです

393 名前:デフォルトの名無しさん [2011/12/26(月) 18:39:34.18 ]
hoge_012.txt
hoge_12345.txt
hoge_abcd.txt
みたいなファイル名のファイル群から、hoge部分を消したいんですが
どう書けばいいですか?
ren hoge_*.txt _*.txt
ってやると
_oge_012.txt
_oge_12345.txt
_oge_abcd.txt
とリネームされました
期待する結果は
_012.txt
_12345.txt
_abcd.txt
です

394 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 22:06:51.92 ]
>>393
ファイル名の先頭のhogeを除去したいなら
for /f "tokens=1,* delims=_" %%a in ('dir /a-d /b ^| findstr /r "^hoge.*_.*"') do (echo "%%a_%%b" "_%%b")
こんな感じかな

ファイル名のどこかのhoge部分を除去したいなら、置換を利用して
for /f "delims=" %%a in ('dir /a-d /b ^| find "hoge"') do (call :renhoge "%%a")
goto :eof
:renhoge
set "name=%~1"
set name=%name:hoge=%
echo "%~1" "%name%"
set name=
goto :eof
こんな感じかな

リネームするときはechoをrenに置き換えてね

395 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 22:24:34.78 ]
>>394
できました!ありがとう
ワイルドカードで簡単に出来るものだと思ってました

396 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 16:34:39.16 ]
できるよ

397 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 01:02:03.81 ]
カレントフォルダにあるすべてのファイルに対して
AABBBtxt→AA-BBB.txt
AACCCtxt→AA-CCC.txt
のように3バイト目にハイフンを入れたいです。
AAは必ず同じ文字列となります。
ren AA* AA-*
としたらAA-BB.txtとなりBが1個きえてしまいました。
どのようにしたらよいでしょうか

398 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 01:08:57.22 ]
まず
set x=AABBBtxt
をAA-BBB.txtに変えてみな
それができればあとはできるだろ?



399 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 02:20:05.30 ]
> 3バイト目にハイフンを入れたいです。
set a=%~1
set b=%a:~0,2%-%a:~2%
echo %b%

400 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 02:22:35.04 ]
> AAは必ず同じ文字列となります。
set a=%~1
set a=%a:AA=AA-%
echo %a%

401 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 11:18:02.60 ]
batファイルからカラーダイアログを呼び出せることって無理ですか?

402 名前:397 mailto:sage [2011/12/29(木) 00:13:43.43 ]
>>398-400
ループ処理が難しそうですが、なんとかできそうです。
ありがとうございました。

403 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:26:05.21 ]
mshta "about:<script>function b(){new ActiveXObject('Scripting.FileSystemObject'
).GetStandardStream(1).Write(d.ChooseColorDlg().toString(16));close();}</script>
<body onload='b()'><object id='d' classid='clsid:3050f819-98b5-11cf-bb82-00aa00b
dce0b'></object></body>"|more

404 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:14:43.54 ]
【質問】
 ・1-18までカウントしていく関数(サブルーチン?)を作りたいです。
  調べて自分なりに試しているのですが、上手くいかずに行き詰ってしまいました。
  下記のように、1-9までは01-09のように0を付加して表示したいです。
  01/18
  処理結果
  02/18
  処理結果
【 OS 】
 ・Windows XP Professinal SP3
【構文】
SET /A CNT = 1
SET /A IND = 18

CALL :ZERO %CNT%

:ZERO
IF "%1" LEQ "9" (
SET /A DD = %1
SET /A DD += 100
SET /A ABC = %DD:~-2%
ECHO %DD:~1,2%/%IND%
SET /A CNT+=1
)
EXIT /B

よろしくお願いします。

405 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:07:34.22 ]
> 1-18までカウントしていく関数(サブルーチン?)を作りたいです。
仕様がよくわからん。18超えたらどうするの?
01,02,03,・・・17,18とechoさせたいわけじゃないよね?
処理結果とあるけど、別の処理をループさせてのカウントかな?
だとすればわざわざサブルーチンにしなくても set CNT=101
で101-118をカウントして %CNT:~-2% で表示させればいい

@echo off
set CNT=100
:loop
set /a CNT+=1
echo %CNT:~-2%/18
echo 処理結果
if not %CNT%==118 goto :loop
pause

406 名前:450 mailto:sage [2012/01/05(木) 18:39:55.01 ]
>>405
レスありがとうございます。
教えていただいた方法でできるようになりました。
どうもありがとうございました!

SQLiteのVACUUMとREINDEXのバッチ作成の際に、01/18: ファイル名.拡張子 と表示して、
現在何個あるうちの何番目を処理中かどうか、というのを表示させたく作成中でした。
その際に、1-9までについては先頭に0を付加したかったのですが、書式的なもののやり方
が分からずにいました。 ※1/18ではなく、01/18のように。

【バッチ内容】
SET ADDONS = addons.sqlite

SET /A CNT = 100
SET /A IND = 18

CALL :loop %CNT% %ADDONS%
REM ここに 01/18: addons.sqlite と表示させたい。
sqlite3.exe ..\..\%ADDONS% VACUUM
sqlite3.exe ..\..\%ADDONS% REINDEX

:loop
SET /A CNT += 1
ECHO %CNT:~-2%/18: %2
EXIT /B


【希望結果内容】
01/18: addons.sqlite

407 名前:404 mailto:sage [2012/01/05(木) 18:43:23.40 ]
>>404です。
>406の名前欄が間違っていました。
失礼しました。

※教えていただいてできたので良かったのですが、
>>404でなぜうまく動作しないのか謎でモヤモヤが。

どうもありがとうございました。

408 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 21:09:16.86 ]
>>407
if "12" leq "9" echo 文字列の比較は一桁目から



409 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 21:11:30.07 ]
×一桁目
○左

410 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 22:31:16.99 ]
コマンドプロンプト上で
for /L %i in (1,1,10) do @(set /a 123)
とやると
123123123123123123123123123123
と改行挟まずに出力されるんですが、これのメカニズムを誰か説明してください。

411 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 22:46:19.69 ]
set が改行を剥いでいるんじゃね。

set /P とかで、入力は改行で終了するだろうけど、結果には改行が入っていない方が便利だし。

412 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 23:14:53.08 ]
setが改行を出さないだけだろ

413 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 19:02:34.30 ]
:loop
execcommand
sleep 600
goto loop

というループがあって
真ん中あたりでユーザーがその挙動を変えられるようにしたいんだけど
何も入力がなければループを妨げない、
入力があったらキーを set key=? して
call :setoption
するにはどうすればいいでしょう。

414 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 19:47:08.87 ]
>>413
www.vector.co.jp/soft/dos/util/se053514.html
こういうツール使うとか
これがまともに動くかどうかわからないから試してダメだったら
似たようなの探すか、作って配布してくれ

415 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 20:36:27.20 ]
choice/?

416 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 22:04:41.80 ]
tomeout/?

417 名前:デフォルトの名無しさん [2012/01/12(木) 22:42:42.89 ]
treeを入れるとそのディレクトリのファイルをツリー形式で出力されますが
これに加えてファイル名+サイズ名+最終更新日を出力したいのですが可能でしょうか?

418 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 23:00:03.63 ]
dir /s を整形するとか。。めんどくさそうだけど。



419 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 23:03:13.11 ]
vbs とかで作った方が楽かと。

420 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 23:18:18.22 ]
バッチでは?

421 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 01:17:12.05 ]
ttp://www1.axfc.net/uploader/Sc/so/309130.jpg
ttp://www1.axfc.net/uploader/Sc/so/309131.zip
こんなのどう
普通にtreeするのに比べるとめちゃくちゃ遅いけど
表示のスタイルは tree /a /f を参考に
ファイルの表示は dir /a-d /t:w を行ごとに

422 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 05:19:27.39 ]
>>417
www.vector.co.jp/soft/win95/util/se247619.html

423 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 06:58:49.41 ]
>>422
スレチ

424 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 15:57:19.14 ]
>>415-416
choiceはできそうだけど、timeoutはどう判定すんだ?

425 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:00:32.46 ]
むりぽ

426 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 22:16:52.32 ]
画面で区別できんだからバッチでもできるっしょ

427 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 02:31:56.51 ]
だめぽ

428 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 00:23:57.26 ]
%1に渡したファイルやフォルダがルートにあるのかどうかを判定するのってどう書けばいいですか?
%~1が3文字だったら、とか思いついたけどもっと上手い方法だったり定石があるなら教えてください



429 名前:428 mailto:sage [2012/01/15(日) 00:25:03.61 ]
訂正します
> %~1が3文字だったら
%~dp1が3文字だったら

430 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 00:36:58.61 ]
UNCとかにも対応したいなら
set a=%cd%
push ..
set b=%cd%
popd
して比較するとか

431 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 01:41:37.76 ]
"%~p1" == "\" だとダメなの?

432 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 09:17:31.43 ]
>>430
ありがとうございます
UNCのことはすっかり失念していました
cdでUNCはカレントに出来ないと言われて困りましたけど
pushd "%~dp1" で勝手にネットワークドライブの割り当てをやってくれて
カレントディレクトリを移すことが出来ました
>>431
それでよかったですよねありがとう


pushd "%~dp1"
if exist "%cd%\%~nx1" (call :ROOTEXP "%cd%\%~nx1") else echo ファイル見つからない
pause
exit
:ROOTEXP
echo "%~1"
echo "%~dpnx1"
if "%~p1"=="\" (echo ルートディレクトリにあるよ) else echo ルートじゃないよ
exit /b

一応、これで意図した動作になりました
ルートにあるファイルやフォルダの場合、echo "%~1" がZ:\\test.txt のように\\となるのですが
正常に動いてるみたいですし、"%~dpnx1"で正しいパスは取れるのですが
この書き方で問題が出るケースはありますでしょうか?

433 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 20:29:01.37 ]
空きメモリか使用メモリを標準出力でゲットするコマンドないですか。
memはさすがに消滅していたw

434 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 21:04:49.82 ]
wmic

435 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 00:29:25.23 ]
tasklistの各行の出力結果を合計してみるとか

436 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 03:38:43.26 ]
それはねーよ

437 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 12:21:08.71 ]
wmic調べてみます。ありがとうございました。

438 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 12:27:17.34 ]
wmic os get freephysicalmemory



439 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:08:24.54 ]
for /f %%i in ('wmic os get freephysicalmemory') do set x=%%i
echo %x%

ECHO は <ON> です。

440 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:35:24.25 ]
for /f "eol=F" %i in ('wmic os get freephysicalmemory') do echo %i

441 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:49:41.37 ]
ECHO は <ON> です。

442 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 21:14:43.83 ]
for /f "skip=1" %i in ('wmic os get freephysicalmemory') do if not defined mem set mem=%i
echo %mem%

443 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:58:50.04 ]
for /f %i in ('wmic os get freephysicalmemory') do (call set x=%i) & if defined x call set mem=%i
echo %mem%


444 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 03:36:44.19 ]
'wmic' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

445 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 14:12:06.16 ]
Windows 2000以降のOSではWMIが標準で実装されている
Windows 2000にはwmic.exeは用意されていない

446 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 15:37:33.32 ]
それを言うならXP以降だろw

以降はそれも含むんだから

447 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:17:43.40 ]
win2kはwmiコンポーネント実装済みだけどwmicは同梱されていないって事じゃね?

448 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:55:57.58 ]
それを言うなら>>446阿呆だろw



449 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 00:35:34.90 ]
xp homeはwmic入ってないのか

450 名前:デフォルトの名無しさん [2012/01/22(日) 15:35:57.54 ]
D:\MUSIC\(複数アーティスト)\(各々に複数アルバム)\Resize\Folder.jpg という階層で
Folder.jpgを1つ上のディレクトリに上書き移動して、Resizeフォルダを削除したいのですがうまくできません。
ご教示いただけないでしょうか、一所懸命初めてバッチ書いてみましたがたぶん見当はずれです

cd /d D:\MUSIC
for /d %%A in (*) do (
cd %%A
for /d %%B in (*) do (
cd %%B\Resize
move /y Folder.jpg ..\Folder.jpg
cd ..
rd /s /q Resize
)
)

451 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:36:07.61 ]
>>450
cd /d d:\music
dir /a-d /b /s Folder.jpg >list_fjpg.txt
dir /ad /b /s Resize >list_Resize.txt
処理するファイルが上のリストで問題ないようならこれで出来ると思う
for /f %%a in ('dir /a-d /b /s Folder.jpg') do move "%%~a" ".."
for /f %%b in ('dir /ad /b /s Resize') do rd /s /q "%%~b"

Resizeフォルダ以外にもFolder.jpgがあって上のがダメなら
dir /a-d /b /s Folder.jpg|findstr /e /l /i "\Resize\Folder.jpg" >list_fjpg.txt
これでたぶん大丈夫だと思うけど試してダメだったらfindstrのオプションとか工夫してみて

452 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:36:27.77 ]
cdをpushdやpopdに変えて試してみてね

453 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:49:17.51 ]
>>450
cd /d "D:\MUSIC"
for /d /r %%a in (*) do (
pushd "%%a"
call :movejpg "%%~na"
popd
)
goto :eof
:movejpg
if not "%~1" == "resize" (if not "%~1" == "Resize" goto :eof)
move Folder.jpg ..\
cd ..\
rmdir resize
goto :eof

454 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:51:54.76 ]
jpgを拾うようにした自前のものがよく似ていたので1行目だけ編集したのを貼ってみる。

cd /d D:\MUSIC
for /r /d %%i in (*) do (
if exist "%%i\resize" (
move "%%i\resize\*.jpg" "%%i"
rd /s /q "%%i\resize"
)
)

趣旨が違うかもしれないが。


455 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:06:41.19 ]
>>454のを少し弄って
cd /d D:\MUSIC
for /r /d %%i in (*) do (
if exist "%%i\resize\folder.jpg" (move /y "%%i\resize\folder.jpg" "%%i"&&rd /s /q "%%i\resize")
)
これで質問者の要求仕様を満たすんじゃね?

456 名前:450 [2012/01/23(月) 09:47:50.42 ]
みなさんありがとうございます!
せっかくなので環境をコピーして4つとも試してみましたがどれもうまくいきました!
バッチファイルが綺麗に完走するのってピタゴラスイッチ的な爽快感がありますね

457 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 13:55:01.20 ]
2chブラウザのkakikomi.txtを自動で編集して、
日付データと本文部分だけを残すというbatファイルをつくりました

find /v "Subject:" <kakikomi.txt >kakikomi2.txt
find /v "URL :" <kakikomi2.txt >kakikomi3.txt
find /v "From :" <kakikomi3.txt >kakikomi4.txt
find /v "Mail :" <kakikomi4.txt >kakikomi5.txt

というゴリ押しで一応目的は達成できたのですが、時間もかかるし無駄が多い気がします
もっとスマートな書き方もあるのでしょうか?

kakikomi.txt内の書き込みデータは、
--------------------------------------------
Date : 2012/01/01 00:00:00
Subject: スレッドタイトル
URL : ...
From :
Mail :

本文
--------------------------------------------
のくり返しになっています

458 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 14:34:47.86 ]
findstr/?



459 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 14:37:22.65 ]
findstr /b /v "Subject: URL FROM MAIL" "kakikomi.txt" >"kakikomi2.txt"
本文の行頭に同じ文字列があったらその行も消えるけど>>457よりはマシと思う

460 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 14:49:55.56 ]
>>459
ありがとう!次回からは書いてくれたものを使ってみます

461 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 23:44:16.41 ]
フォルダ内のtest*.batを順に実行したいのですが、10回callする毎に標準出力に
メッセージを出したく思います
↓を実行すると毎回echoが実行されてしまうのですがどう修正すべきでしょうか?

set /a N=1
for /F %%a in ('dir .\test*.bat /b') do (
call %%a
set /a N = %N% + 1
if "%N%"=="10" do (
echo ----------
set /a N=1
)
)


462 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:15:29.97 ]
>>461
echo onで実行されたバッチがどうなってるか見りゃわかるけど…

遅延環境変数でググってみ。

463 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:56:33.67 ]
for /f %%a in ('dir /b test*.bat') do (
call %%a
call :COUNT
)
pause&exit

:COUNT
set n+=1
if %n%==10 (echo ----------&set n=
)
exit /b

464 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:59:13.37 ]
> set n+=1
set /a n+=1

465 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 09:22:44.38 ]
遅延環境変数のことを失念していました(ノ∀`)
サンプルまで書いていただいてありがとうございます

466 名前: 忍法帖【Lv=5,xxxP】 mailto:sage [2012/01/28(土) 20:05:08.71 ]
Vista/7などで環境変数を永続的に変えるのってCUI(cmd)じゃできないんですか?
95とかならexec.batをいじるとできるそうですがいい方法無いですかね
マウスでカチカチみんな設定してるの?

467 名前: 忍法帖【Lv=5,xxxP】 mailto:sage [2012/01/28(土) 20:06:15.39 ]
Vista/7などで環境変数を永続的に変えるのってCUI(cmd)じゃできないんですか?
95とかならexec.batをいじるとできるそうですがいい方法無いですかね
マウスでカチカチみんな設定してるの?

468 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 20:08:12.26 ]
setx



469 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 20:37:47.45 ]
autoexec.batだろ

470 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 20:50:34.72 ]
>>467
GUIだけどキーボードだけで設定ダイアログまで行けるぞ
Windowsキー → 「環境変数」と入力 → 上に「環境変数の設定」が出て来たらEnter

471 名前: 忍法帖【Lv=5,xxxP】 mailto:sage [2012/01/28(土) 21:30:25.20 ]
Vista/7などで環境変数を永続的に変えるのってCUI(cmd)じゃできないんですか?
95とかならexec.batをいじるとできるそうですがいい方法無いですかね
マウスでカチカチみんな設定してるの?

472 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:43:58.44 ]
>>469-471
>>468で完璧な回答が出てるのに… メクラ?

473 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 22:00:05.37 ]
exec.batってなんだよ

474 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 22:02:10.08 ]
>>472
自分で調べる気がないってことでしょ。
スルーでいいよ。

475 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 22:33:43.17 ]
コンソールで使える日本語TTフォントはMSゴシックしかないの?

476 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 00:12:38.08 ]
fixed98epsonマジオススメ

477 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 20:37:29.16 ]
標準で入ってるものではMSゴシックだけ?

478 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:41:10.62 ]
レジストリいじれば好きなTTフォント使える。

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
でググれ



479 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 21:41:35.10 ]
ほんとかよ 使えなかったが?

480 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 23:24:15.61 ]
俺は使えてる、XP x64。
レジストリ微妙に何か間違ってるか、プロンプトを間違えているとか?
64bit OS で 32bit の cmd.exe を常用してる?

↓が『64bit OS で 32bit の cmd.exe 』の場合
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont


481 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 23:27:13.38 ]
プッ

482 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 03:05:05.71 ]
コマンドプロンプトから引数を与えたときはちゃんとaiueo.txt作れるんだけど
ドラッグアンドドロップでやるとaiueo.txtを作ってくれない
どうしたらD&Dで引数受け取ったとき出力をファイルに書き出せる?

aiueo.bat
-------------------
setlocal
set a=aiueo.txt
if not exist %a% (echo Aiueo > %a%)
date /t >> %a%
time /t >> %a%
echo %1 >> %a%
endlocal

483 名前:482 mailto:sage [2012/02/01(水) 03:12:11.39 ]
ごめんなさい自己解決しました
バッチファイルのあるフォルダじゃないとこに保存されてた・・・

484 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 04:40:16.31 ]
>%~dp0%a%

485 名前:482 mailto:sage [2012/02/03(金) 03:10:09.37 ]
d

486 名前:忍法帖 [2012/02/05(日) 01:47:02.01 ]
--------終了-------


487 名前:忍法帖 [2012/02/05(日) 01:47:36.54 ]
--------終了-------


488 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 03:25:30.09 ]
質問をさせて下さい。
親フォルダにbatを置いて実行し、batの力でそこから子フォルダ、よく孫フォルダ、たまに曾孫
稀により下のバラバラな階層にある複数の最下層フォルダを、順々にカレントディレクトリ
にしたいのですが、どうやればよいのでしょうか?
やりたいことは最下層フォルダにあるファイル数が10個未満の場合に
その最下層フォルダを任意の場所に移動したいのです。

最下層フォルダからの個別移動に関しては最後の削除あたりがうまくいきませんでしたが
それ以外はこのスレを参考にして、なんとか動かすことができました。ありがとうございます。
後は親から複数の最下層フォルダに辿り着ければ何とかなりそうなのですが…
どうか知恵をお貸しください。よろしくお願いします。

個別の処理.bat
for /f %%a in ('dir /a-d ^|find "個のファイル"') do (
echo %%a
if %%a LSS 10 ( call :IDOU ) else ( echo 10個以上ある )
)
exit /b

:IDOU
echo このフォルダ内のファイル数は10個未満
for %%I in ("%~dp1.") do (
md "%%~nxI"
set DNAME="%%~nxI"
move *.* "%~dp0%%~nxI"
move "%~dp0%%~nxI" "C:\Users\XXX\Desktop\移動先\"
cd ..
pause
del "%~dp0%%DNAME:~1,-1%"
)
exit /b



489 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 05:35:08.76 ]
>>488
カレント配下のディレクトリ全てで最下層であるかどうかの判定

for /d /r %%a in (*) do (
for /f "usebackq" %%b in (`dir /ad "%%a"^|find "個のディレクトリ"`) do (
if %%b==2 (echo "%%a" の下にディレクトリはないよ)
)
)
pause
exit /b

> 最下層フォルダからの個別移動に関しては最後の削除あたりがうまくいきませんでしたが
echo on にしてみれば何が悪いか分かるはず

490 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 05:35:19.42 ]
>>488
:IDOUをcallするときに引数いれてないけど、:IDOUの中で%~dp1って使う意味はあるの?
それとsetするときはset v="〜"じゃなくてset "v=〜"ってしたほうがいいと思うよ
そうすれば変数の中にダブルクォーテーションが入らない
delのところも普通に%DNAME%と書けるようになる
ところでdelのところ%の数がおかしいんじゃないか?
削除がうまくいかない原因はそれではなかろうか

最下層の判定は、そのディレクトリ内のディレクトリの個数調べればいいんじゃね
ディレクトリを順に回りたければ
for /d /r %%a in (*) do (pushd "%%a" 〜)
とか
for /f "delims=" %%a in ('dir /ad /s /b') do (pushd "%%a" 〜)
とか?
こんな感じで実行したところからサブディレクトリを全部回ってくれるんじゃないかな

491 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 05:40:35.55 ]
レスがかぶっちゃった
delはファイルじゃなくてディレクトリ消したいのか
だったらそもそもdelじゃなくてrmdirにしないと

492 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 06:14:41.60 ]
>>488
set MVDIR="C:\Users\XXX\Desktop\移動先"

for /d /r %%a in (*) do (
for /f "usebackq" %%b in (`dir /ad "%%a"^|find "個のディレクトリ"`) do (
if %%b==2 (
for /f "usebackq" %%c in (`dir /a-d "%%a"^|find "個のファイル"`) do (
if %%c lss 10 ( move "%%a" "MVDIR" )
))))
pause
exit /b

493 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 11:23:22.56 ]
実行しなくてもわかる、1個目はリネーム、2個目以降は上書き確認でストップ

494 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 12:29:44.08 ]
>>489
以前はusebackqも/rも難しく考えて良く分からなかったのですが
このような身に沁みて実用的なアドバイス頂いたお陰で身近な存在になれました。
ググッて他の実用例を見ながら勉強します。ありがとうございます。とても参考になりました。

後はecho onについてなんですが、これは最初の行に@echo onと書くだけで良いのでしょうか?
現在はecho 変数 かアヤシイ直後にpauseでcmd画面の直前を確認する位しか方法が分かりません
初歩的な質問ですみませんが、もしよろしければご指導頂ければ助かります。

>>490
カレントフォルダ名を取得しようとしたforになりますが%~dp0.ですね、失礼しました。
それとsetについてですが、二重の"のうち1つを削る様な場面では有効でしたが
例えばset "v=v&v"とするとecho "%v%"では大丈夫でも%v%ではバグるみたいでした。
もし私のやり方が間違っていたらごめんなさい…けど便利ですね。
これからは使わせて頂きます。最下層判定と合わせてありがとうございました。

495 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 12:31:41.87 ]
>>491
cdの行を消してrmdir "%~dp0"としてみましたが出来ませんでした。
「プロセスはファイルにアウセスできません。別のプロセスが使用中です。」
との事だったので、そもそもの消すフォルダからbatを実行したのでは難しそうと思い
試しにrmdir "C:\Users\owner\Desktop\移動先\新しいフォルダ"
としてみたら無事に消す事が出来ました。ありがとうございます。

>>492
ありがとうございます!無事に出来ました!
粋な"MVDIR"のお陰でもう忘れないと思います。
後はじっくり解読しながら使いこなせるよう頑張ります。
わざわざ全文書いて頂きどうもありがとうございました。

>>493
>2個目以降は上書き確認でストップ
483では出てきませんでしたが、確かに他の書き方だと出てきました。
てっきり削除確認のY/Nかと思ってましたが上書きだったんですか…
思いもしませんでした。ご指摘どうもありがとうございました。

496 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 13:04:19.85 ]
>>494
echo %v%でばぐるのかな
これは&を^&に置換するか、
setlocal enabledelayedexpansion
としておいて、echo !v!とかすればちゃんと&も表示されるよ

497 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:07:11.18 ]
置換するにも、遅延しないとできねえよ

498 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 18:25:43.69 ]
windowsのスタートアップの中でバッチファイルを動かして、他のマシンにマジックパケットを
送りたいんですが、どうもその時点で無線LANが繋がってないようで、対象マシンがWakeUp
してくれません。
バッチ処理を遅延するにはどうしたらよいですか?



499 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 19:04:48.67 ]
ping -n
timeout

500 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 21:01:48.95 ]
Vista 以降ならむしろ、スタートアップじゃなくてタスク向きな気がする。

501 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 21:15:45.22 ]
:loop
ping -n 1 "192.168.0.1"||goto :loop

502 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 21:29:06.33 ]
powershell -command { start-sleep -s 5 }

なんでWindowsって意地でもsleep標準装備しないんだYO!

503 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 21:52:33.59 ]
>>502
これ以上Unixからパクるのはプライドが許さないから
なんちてw

504 名前:498 mailto:sage [2012/02/09(木) 22:27:55.28 ]
みなさま、ありがとうございます。
とりあえず、対象マシンがスリープ状態なので、ping に応答しません

timeout と powershell-command {start-sleep -s 120 }
を試してみたんですが、起動後ならうまく動くんですが、
スタートアップから起動すると、うまく行きません
電文の送信に失敗しました、とか一瞬表示されてパケットは送られていないようです。


505 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 22:36:54.27 ]
スタートアップだから動かないってことはないだろう
最終行にpause入れて何がどう駄目なのか調べてデバッグするしか

506 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 22:42:57.44 ]
> 対象マシンがスリープ状態なので、ping に応答しません
無線LAN親機とかデフォルトゲートウェイにpingしてLANが繋がってからマジパケ送ればいい

507 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 15:18:28.31 ]
システムのパスにbatファイルから一時的に追加する書き方を教えてください

508 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 15:36:47.43 ]
sex



509 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 17:29:08.94 ]
set PATH=c:\bin;C:\tool;%PATH%

510 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 19:16:11.19 ]
path /?

511 名前:498 mailto:sage [2012/02/10(金) 20:59:56.43 ]
>505,506
そうか、pingは自分のethを試すためだったんですね。
powershellもぐぐってやっと動く用になりました。
ありがとう


512 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 01:09:40.46 ]
>>502
PowerShellを標準装備するようにしたから、わざわざcmd用に作る必要がないってだけじゃね?
まあたいした手間でも全然ないとは思うが

513 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 15:44:36.41 ]
質問なんですが、
ping 192.168.0.4 | find "Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)"
echo %errorlevel%

上記をbatで行うと、pingが0%lossでも戻り値が1になってしまいます。

ただ上記のコマンドをプロンプトで実行→echo %errorlevel%で確認すると戻り値は0となります。

これは何故なんでしょうか?


514 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 15:56:01.63 ]
ローカルにサーバを立ててましてIPが127.0.0.1になります
サーバが動いているかをbatファイルで監視して、サーバが落ちたらbatファイルを終了すると方法を伝授してください

515 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 15:59:23.21 ]
>>513
バッチファイルにも(0% loss)ってそのまま書いてる?
もしそうなら%を%%にしてやってみて

516 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 18:21:04.29 ]
>>515
出来ました!ありがとう御座います

でも「0%」だと何かの変数を展開しようとするんですかね?
それを新たに%を付けて文字列として扱う用にしてるとか…

どっちにしろ""で囲んだら変数は展開されないっていう認識だったのでそれも間違いみたいですね…

勉強してきます



517 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:05:54.56 ]
wgetを使ってソフトの最新バージョンをDLできるバッチを作成したいと思ってるのですが
ファイルのリンクがttp://hoge/更新日付/a-z,0-9を含む不規則な文字列/v1.0.0.zip
のような場合で不規則な文字列に対応させるにはどう記述すればいいでしょうか
日付は%date%で置き換えられるのが分かりましたが今回の件で詰まってしまいました・・・

518 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:06:05.33 ]
>>514
@echo off
:pingchk
ping 127.0.0.1 -n 2
if errorlevel 1 goto end
if errorlevel 0 goto pingchk
:end

これで行けるかと
相手先ノードへのping間隔を多くしたいならlocalhostへのpingでsleepにしておけばいいと思います



519 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:35:28.07 ]
@echo off
:re
ping 0.0.0.1||goto re
:end

520 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:47:39.62 ]
for /f "tokens=4 delims=/" %%a in (target.html) do (echo ttp://hoge/更新日付/%%a/v1.0.0.zip)

521 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 01:24:18.48 ]
>>517
直リン or 不規則な部分、の入ったページがあるならそのページをゲットして
URL を抜き出す or フルのURLを生成、すればいいじゃない

522 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 11:55:51.46 ]
>>518
ありがとうございます!

523 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 11:59:26.64 ]
>>518
試してみたんですが、動きませんでした
Windowsにapacheを入れてサーバ起動後にbatファイルを起動して、サーバを終了させても batファイルが終了しませんでした

524 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 12:13:29.84 ]
鯖が生きてるかどうかとpingが通るかは別だろ
もっとまともなスクリプト使ってチェックするか
wgetしてファイルの中身チェックするか
wget localhost/test.htm || echo 死んでる

525 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:22:54.48 ]
>>523
@echo off
:pingchk
tasklist | findstr apache.exe
if errorlevel 1 goto end
if errorlevel 0 goto pingchk
:end

526 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:31:34.25 ]
>>520-521
ありがとうございます
for /f "tokens="勉強になりました
調べまくってようやく521さんの答えにたどり着いたとこでした

527 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:52:56.86 ]
>>524
サーバが停止してたら127.0.0.1にアクセスできなくなるのですがこれは通らないものなんですかね?
>>525
プロセスを監視する方法がいいのかもしれません
そのまま実行するとcpu100%になってしまうので1秒スリープをいれたいのですが
@echo off
:pingchk
ping 198.162.0.0 -n 1 -w 1000>nul
tasklist | findstr httpd.exe
if errorlevel 1 goto end
if errorlevel 0 goto pingchk
:end
とやって1秒スリープを入れてるのですがスリープされません
ping 198.162.0.0 -n 1 -w 1000を単品でdosに打つとタイムアウトはしたので存在しないipであります

528 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 14:31:07.38 ]
>>527
> サーバが停止してたら127.0.0.1にアクセスできなくなるのですが

そのアクセスとはHTTPアクセスであって、応答無くなるのは
それはwebサーバが停止しているだけの話で
PCそのものネットワークが有効か調べるpingとは直接関係ないから。



529 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 16:47:17.56 ]
ヘタすると、OS死んでても ping 応答する奴すらあるし。

530 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 22:38:45.91 ]
>>526
おめ

>>527
ちょい外れるけど
198.162.0.0
への ping がキモ過ぎる……


Apache ならサービスで起動しておいてサービスの状態を監視する方がスマートだと思う。

sc <サーバー> query Apache2.2 | findstr "RUNNING" 1>nul 2>&1
if エラーレベル なんちゃら

みたいに。

531 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 02:49:03.22 ]
テスト
copy a Ā


532 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 02:52:17.36 ]
Microsoft Windows XP [Version 5.0.2195]
(C) Copyright 1985-2001 Microsoft Corp.

>copy a Ā
Ā was unexpected at this time.

なんでこうなるの?


533 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 03:05:39.01 ]
>copy a Ă
1 file(s) copied.
これはokなのに…


534 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 06:17:53.00 ]
codepageは?

535 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 08:09:38.30 ]
D:\>chcp
現在のコード ページ: 932

D:\>copy a Ā
Ā の使い方が誤っています。

D:\>copy a Ă
1 個のファイルをコピーしました。

なんだろこれ

536 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 09:54:38.86 ]
調べてみたらこんな感じ

switch (c){
 case '&':
 case '<':
 case '>':
 case '|':
  return 0x100;
 default:
  return c;
}

537 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 11:08:50.01 ]
Ā = Ā

538 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 11:14:57.58 ]
Ā = &#x100;



539 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 12:17:59.80 ]
C:\proc\data\ ディレクトリ内にある
音響.txt さくら.txt 夕暮れ.txt 冬籠もり.txt 花 暦.txtなどの複数ファイルのうち、
ひとつずつloop+moveで処理したいと思っています

find "C:\proc\data\" -maxdepth 0 -name "txt" -exec set input_file = {} \;

call "C:\proc\resize.bat" "%input_file%"
move %input_file% "C:\proc\data\move\"

txtでファイルを検索し、moveでresize.bat適用後にファイルを移動させることで
最終的にC:\proc\data\内のファイルがなくなって処理終了、と考えているのですが

最初のfindコマンドが「操作可能なプログラムまたはバッチ ファイルとして認識されていません」と表示されてしまいます

おそらく最初のコマンドがunixコマンドなのだと思うのですが
dosコマンドで同じように、特定のフォルダからファイルのパスをひとつだけ検索して変数に置き換えられるコマンドにするにはどうすればいいでしょうか
よろしくお願いします

540 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 12:36:31.32 ]
for %f in (C:\proc\data\*.txt) do echo %f
次回は「バッチファイル」で検索してから質問する事。

> find "C:\proc\data\" -maxdepth 0 -name "txt" -exec set input_file = {} \;
> call "C:\proc\resize.bat" "%input_file%"
> move %input_file% "C:\proc\data\move\"

そもそも、findがあっても動かねーだろ。w

541 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 14:12:40.98 ]
それ以前にfindが無いってのはどういうこと?
win98にはあったような…。win95位前は覚えてないんだけど。

542 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 14:22:32.94 ]
winのはfindはコマンドが違うし別物
どこからか落としてきて使えないことはないけどfor /f使うのがめんどくさい

543 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 14:27:51.28 ]
いやそれは知ってるけどさ、元からある奴は消さなきゃ無くならないだろ。

最初からないっていう環境はあんの?

544 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 15:51:48.05 ]
>>539の事だから、どんなことやってるか凡人には想像もできない。
するだけ無駄だから「無い」はそのまま受け入れよう。

545 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 16:11:39.69 ]
forfiles使えよ

546 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 17:14:35.31 ]
>>540
うまくいきました!ありがとうございます!

やっぱりDOSコマンドとUNIXコマンドは別物でwindowsでのバッチコマンドは前者のみを示すんですね

547 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 17:37:03.90 ]
>やっぱりDOSコマンドとUNIXコマンドは別物でwindowsでのバッチコマンドは前者のみを示すんですね

だって

548 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 17:45:33.75 ]
UNIXを知ってると自慢したいだけだろw



549 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 17:54:23.44 ]
一応forfilesがunixのfindもどきなんだけどね。
一応findstrがunixのqgrepもどきなんだけどね。


550 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 18:49:41.24 ]
technet.microsoft.com/ja-jp/interopmigration/bb380242

551 名前:デフォルトの名無しさん mailto:saga [2012/02/15(水) 19:02:11.46 ]
こんなゴミのリンク貼るなよ。
>>550
サポートされているオペレーティング システムWindows 2000 Service Pack 3/Windows 2000 Service Pack 4/Windows Server 2003/Windows XP

552 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:19:45.98 ]
すいません、教えてください。

バッチファイルの中の処理でファイルを作成するステートメントを書きます。

次のステートメントの処理が始まるのは、先のファイル作成の完了(ディスク上にファイルができる)の後ということでよいでしょうか。

コマンドプロンプトを考えれば、そうなると思うのですが、念のため。例えば外部ディスクへの書き込みまちなどをしている間に、次の処理が始まるということはないでしょうか。

初歩的な質問ですがお願いします。


553 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:16:05.18 ]
普通に考えれば分かるだろ?

554 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:33:11.21 ]
へえ?どう分かるんだ。教えろ。

555 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:40:23.55 ]
基本的に逐次処理されるよ
ただしstartコマンドは/waitしない限りプロセスを起動して終了を待たずすぐ制御を返す

556 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:44:12.61 ]
当たり前すぎて、つまらないレスですね

557 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:47:07.31 ]
前のコマンドの終了を待たずに次のコマンドを実行するってことは
前のコマンドの実行開始とほぼ同時に次のコマンドを、更にその次を…ってことで
全てコマンドを同時実行するに等しい

558 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:52:43.88 ]
書き込み量が多くてバッファに残ってるのに
次の処理が始まる可能性は?



559 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:56:07.57 ]
>>558
頭悪そう

560 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:58:16.11 ]
頭悪いひとが悩むようには作られてないってことだよw普通に考えれば


561 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:03:42.82 ]
プロセスから見て終了していても、
実際には終了していない場合もある

562 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:15:24.97 ]
下手の考え休むに似たり

563 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:18:41.49 ]
具体的に反論してくれないとつまらん。
頭良いんだろ?お前ら

564 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:19:44.80 ]
お前を楽しませてどうするbkk

565 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:23:41.72 ]
つまんね

566 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:30:17.34 ]
start hoge
nanika
matiawase hoge
ってどうやればいい?

567 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:34:21.30 ]
頭悪いんで質問の意味が分からん

568 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:19:12.92 ]
start hoge.bat
nanika

hoge.bat
start /w hoge.exe
matiawase hoge以下でやりたかったこと




569 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:20:08.67 ]
わからんならスルーしろよw

570 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:29:55.10 ]
それだと
matiawase hoge以下でやりたかったこと が nanika のあとにならんだろ

571 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:31:59.90 ]
echo ^G
はどうやりぃい?

572 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:15:55.68 ]
hoge|nanika
matiawasego
だな

573 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:20:12.51 ]
>>569
誰に言ってるんだよ
俺は知らんぞ

574 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 07:54:23.11 ]
552の質問をしたものです。

別プロセスを起動しない限り、先の処理の完了をもって次の処理が始まる
ということですね。何をもって完了というところが、疑問だったのですが、
基本的には、ファイル作成なら作成完了で制御情報が返ってきて、プロセス
が完了と判断すると考えることにしました。

皆様レスありがとうございました。


575 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 21:26:17.89 ]
下手の考え休むに似たり

576 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:38:44.25 ]
copy 巨大ファイル
なんてやってると、copyから復帰してもガリガリやってるな

577 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 00:40:52.49 ]
>>576
遅延書き込みのせいかも
ttp://d.hatena.ne.jp/FukayaAruto/touch/20080228/xp_vista
ttp://d.hatena.ne.jp/NyaRuRu/touch/20080306/p1

578 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 12:51:23.53 ]
hou

>for %i in ("<html></html>") do echo %~i > index.htm
>type index.htm
<html></html>



579 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 10:43:13.48 ]
親フォルダは削除せずに、サブフォルダだけを削除する方法ってありますか?

今は仕方がないので
rd C:\aaa /s /q
mkdir C:\aaa
という風にしています。

580 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 11:17:08.69 ]
for /d %d in (c:\aaa\*) do rd /s /q %d

581 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:33:05.60 ]
cd C:\aaa
rd . /s /q


582 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:55:32.97 ]
cmdのカレントディレクトリって何故かロックされるんだよな
Explorerからの削除を妨害されて何度泣いたことか

583 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 18:20:43.56 ]
カレントディレクトリが勝手に削除されたら困るだろが?

584 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 19:24:16.57 ]
>>580
ありがとうございます
空フォルダが残ってしまいませんか?

>>581
ああ!たしかにこれで充分ですね!

585 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 19:30:49.87 ]
cd, pushは必ず結果をチェックしないといつか泣きをみるぞ

cd C:\aaa || goto error
rd . /s /q
...

:error
pause
goto :eof

586 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 20:23:36.15 ]
んじゃ

cd C:\aaa && rd . /s /q


587 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 02:42:34.41 ]
最後に goto :eof とか書くのは意味あるのか?

588 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 02:52:17.45 ]
cd の後に rd . /s /q とか怖いぞ
cd /d にしたほうが安全



589 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 03:40:34.17 ]
バッチは途中でエラーがあっても突っ走るから怖いぞー

590 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 20:46:15.45 ]
ビビッテンジャネーヨ!

591 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 21:13:52.68 ]
>>587
その後に別のエラー処理を追加するケースとかを想定してんじゃね?

592 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 00:07:30.67 ]
cdやpushdなんてせずにフルパス指定すればいいじゃん(いいじゃん)

593 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 00:08:54.73 ]
どうしてもカレントディレクトリを変える必要があるのって
どんなケース?

594 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 00:48:49.77 ]
更新日時の更新はどうやるんだっけ?

595 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 00:55:28.36 ]
ロックしたいからカレントディレクトリを変えてるんだろ
RD フルパス指定だと、それ自体が消えちゃう
もちろん他の方法もあるだろうけど

596 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 01:16:36.08 ]
type nul >>594

597 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 01:23:27.14 ]
作成日時の更新はどうやるんだっけ?

598 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 01:34:16.63 ]
WSHで



599 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 01:42:12.15 ]
>>596
試したら更新されなかった

600 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 02:28:12.37 ]
cd /d "%~dp1"
copy %1 +


601 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 17:08:20.85 ]
対策法を見つけはしたが、皆さんならどうするのか聞かせて。iは、コマンドラインを想定。
set i="a" /? "b c"
if "%i%"==""a" /? "b c"" (echo YES)



602 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 18:10:01.03 ]
待ち時間作るときって
WSHでやるかpingでやるかどっち使ってる?

603 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 18:30:05.89 ]
sleep

604 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 18:58:53.54 ]
timeout.exe 、2003以降なら標準で使えるし
『何かキーを推せば続行』がお手軽なので
timeout.exe が使えないか使えない可能性がある、待ちの確認やスキップが不要、なら ping

605 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 19:01:34.24 ]
こんな便利なものがあったのかthx

606 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 22:27:48.98 ]
>>600
cd使うなってよ

607 名前:デフォルトの名無しさん [2012/02/24(金) 03:35:01.15 ]
oshiete.goo.ne.jp/qa/3913616.html
これをフルPath指定ではなく、前方一致(もしくは部分一致)にするには、どうしたらよい?

www.tkssoft.com/cmd/cmd027.html
と組み合わせれば良いのかなー…と思ってるんだけど。
Forをネスト??

608 名前:607 mailto:sage [2012/02/24(金) 03:47:13.89 ]
↓こんな感じにしてみるも、うまくいかず…

set Folder1=c:\src
set Folder2=c:\dst

for /f %%z in (c:\copy\list.txt) do call :add1 %%z

:exit
pause
exit /b

:add1
set DATA01=%1
cd /d %Folder1%
for /d /r %%a in ( * ) do copy "%%a\*%DATA01%*" "%Folder2%"

exit /b

pause




609 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 03:53:12.74 ]
>>606
カレントディレクトリにファイルが有るんなら cd は不要だよ
copy /b %1 + nul %1
これは更新されない
copy %1 + nul %1
これは更新されるがファイルにゴミ(0x1A)が付く


610 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 10:19:43.13 ]
>>601
@echo off
set i="a" /? "b c"
:: jは比較用
set j="b" /? "c"
:: \"a\" /\? \"b c\" を作る
set "t=%i%"
call set "t=%%t:"=\"%%"
call set "t=%%t:?=\?%%"
:: YES1だけ出たらおk
echo %i% | findstr /r /c:"%t%" >nul 2>nul && echo YES1
echo %j% | findstr /r /c:"%t%" >nul 2>nul && echo YES2
pause

611 名前:607 mailto:sage [2012/02/24(金) 16:13:35.83 ]
自己解決。

:: --------------------------------- set path
set src=c:\copy\src
set dst=c:\copy\dst

:: --------------------------------- main script

echo ------ Search and Copy Start ------

for /f %%z in (list.txt) do call :copy1 %%z

:exit
pause
exit /b

:copy1
set search1=%1
echo %search1%
cd /d %src%
for /R %%i in (%search1%*) do (
copy %%i %dst%
)

exit /b

pause

:: --------------------------------- end

612 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 16:23:09.36 ]
exit /b

pause <==== これは何のお呪いですか?

:: --------------------------------- end

613 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 17:16:06.15 ]
お祝いです

614 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 18:18:43.22 ]
確かにexitの直後のpauseは何の意味がって感じではあるな

615 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 19:41:10.39 ]
cd /d "%~2"
とかで引数で受けるならサブルーチンでcdする意味あるだろうけど
cd /d %src% だとcallする度にcdするのは効率悪いから
mainのforの前でcdしてしまったほうがいいね

616 名前:607 mailto:sage [2012/02/25(土) 00:47:22.76 ]
>>612-615
指摘さんくす
いちおう修正版投下しとくね
※list.txtがバッチファイルと同じディレクトリにあるから、ちょっと面倒だった…

:: --------------------------------- set path
set src=C:\Users\xxxxx\Desktop\copy\src
set dst=C:\Users\xxxxx\Desktop\copy\dst
set list=list.txt
:: --------------------------------- main script

echo ------ Search and Copy Start ------

set listpath=%~dp0list.txt

cd /d %src%
for /f %%z in (%listpath%) do call :copy1 %%z

:exit
pause
exit /b

:copy1
set search1=%1
echo %search1%
for /R %%i in (%search1%*) do (
copy %%i %dst%
)

exit /b

:: --------------------------------- end

617 名前:607 mailto:sage [2012/02/25(土) 00:48:07.87 ]
set listいみねぇな…まぁいいや…

いろいろありがとノ

618 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 10:10:40.37 ]
おお、\" で、echo findstr を使うのかー!成る程。ありがとう。
恥を忍んで聞きますが、set "a=b" や、call set が不要に思えます。想定したものがあれば教えて下さい。
対策したのも、あげておきます。spaceだけを置き換えました。他のtabとかも置き換えると、行数が増えます。
set i="a" /? "b c"
set Jyouken="a" /? "b c"
set Jyouken=%i%==%Jyouken%
set Jyouken=%Jyouken: =_SPACE_%
if %Jyouken% echo YES!




619 名前:601 mailto:sage [2012/02/25(土) 11:39:22.21 ]
618 に 名前:601 とか >>610 つけるの忘れました。
618 がちょっと、舌足らずなので追加します。
>>610
これだけでも動くので、不要に思えました。
set i="a" /? "b c"
set Jyouken="a" /? "b c"
set Jyouken=%Jyouken:"=\"%
echo %i% | findstr /r /c:"%Jyouken%" >nul 2>nul && echo YES1



620 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 13:37:13.64 ]
拡張子によって処理を分岐させるにはどう書けばいいですか?

621 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 13:47:11.60 ]
質問者が手を抜いてるのに
それに答えるアホが現れるかどうか

622 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 13:52:48.57 ]
拡張子を判定してgotoすればいいです。

623 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 13:55:31.07 ]
>>620
どこにその文字列が格納されているかによるけどサンプルをいくつか

if "%~x1"==".bat" ...

goto label%~x1
...
:label.bat

for %%i in (foo.bat) do call :label%%~x1

624 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 16:32:51.65 ]
すみませんお騒がせしました
昨日調べて作ってみたのが動かなかったんですが
なぜかさっきもう一回試したら動きました

if "%~x1"==".rar" goto RAR
if "%~x1"==".7z" goto 7Z

shift
:RAR
rar x -y -ep1 "%~1" "%~dp1"
goto END

shift
:7Z
7z x -y "%~1" -o"%~dpn1"
goto END

625 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 16:38:37.73 ]
linuxのwgetみたいなのってbatだけでは無理ですか?

626 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 16:47:10.24 ]
ってよく考えたら2つの比較なら
if "%~x1"==".rar" (rar" x -y -ep1 "%~1" "%~dp1") else (7z x -y "%~1" -o"%~dpn1")
でよかったですね


627 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 17:10:54.72 ]
>>625
1.Powershellでごり押し
2.bat|cmdとwshでハイブリットごり押し
スクリプトのみはちょっときついかもね

628 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 17:27:47.53 ]
Powershellというのでやってみます



629 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 20:34:30.84 ]
>>609
> copy /b %1 + nul %1
> これは更新されない
更新されるが?

630 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 21:31:05.12 ]
>>625
opensourcepack.blogspot.com/2010/05/wget-112-for-windows.html
こういうWindowsバイナリを使わずにってこと?

631 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 08:06:00.39 ]
それ使っていいなら、こんなスレで質問しないと思うが…

バッチ / スクリプトのみではちょっと無理でしょ。

MSXML2.ServerXMLHTTP + スクリプトあたりが無難だと思うが。

632 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:33:59.21 ]
あー聞き方が曖昧だった。
Windowsバイナリ使わずに技術的に可能ならやってみる、ってこと?
を聞いてみたかっただけ。どこまでやってみるのか分からないけど
再帰、階層、ミラー、etc,...、とか考えるだけでしんどそうなのに挑むのかと。

633 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:55:11.72 ]
本当に本人かどうかはわからんけど、>>628 で Powershell でやってみると言ってるよ。

> 再帰、階層

むしろここら辺はスクリプトでも扱いやすいと思うけど。

634 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 06:27:04.19 ]
バッチに送った複数のファイルやフォルダのパスをソートしたいのですが
@(for %%a in (%*) do @echo "%%~fa")|sort
ですと
"C:\TMP\abc\1ファイル.txt"
"C:\TMP\abc\2ファイル.txt"
"C:\TMP\abc\3ファイル.txt"
"C:\TMP\abc\4フォルダ"
"C:\TMP\abc\5フォルダ"
のようになってしまいます。これをエクスプローラーの並び順のように
"C:\TMP\abc\4フォルダ"
"C:\TMP\abc\5フォルダ"
"C:\TMP\abc\1ファイル.txt"
"C:\TMP\abc\2ファイル.txt"
"C:\TMP\abc\3ファイル.txt"
としたいのですがどう書けばいいですか

635 名前:デフォルトの名無しさん [2012/02/29(水) 10:40:52.94 ]
>>629
俺のは更新されない
なんでだろうな

636 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 10:46:38.26 ]
vbs呼び出して頑張って自分でソートする

637 名前:デフォルトの名無しさん [2012/02/29(水) 11:56:21.97 ]
フォルダに他の属性が無いなら
@(@for %%a in (%*) do @if "%%~aa" == "d--------" @echo "%%~fa") | sort
@(@for %%a in (%*) do @if not "%%~aa" == "d--------" @echo "%%~fa") | sort

638 名前:デフォルトの名無しさん [2012/02/29(水) 12:02:28.55 ]
forとechoの前の@は不要だな



639 名前:ホイミン mailto:sage [2012/02/29(水) 14:54:02.18 ]
R:\Ue\Shita>dir /b /s .. ファイルが次の様にあります。
R:\Ue\Shita 上フォルダの中に下フォルダが有り、
R:\Ue\Ue1.txt それぞれ、ファイルが有ります。
R:\Ue\Shita\Shita1.txt
このうそつきを実行します。\じゃないところに注意。
R:\Ue\Shita>for %i in (../*) do @echo "%~fi"
"R:\Ue\Shita\Ue1.txt" 適当にパスを付けた、有りもしないファイルが表示されます。

>>634 僕も考えてみたよ。637も同じだけど、複数のディレクトリーにまたがる場合は、分ける必要が有るよ。
for /f "delims=" %%a in ('(dir /ad /b /on %* ^& dir /a-d /b /on %* ^) 2^>nul') do echo;"%%~fa"


640 名前:ホイミン mailto:sage [2012/02/29(水) 15:06:06.53 ]
でも dir /b /og の方が便利そうだね。
ごめんよ、ややこしくして。

641 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 15:59:08.48 ]
ちょっと質問なんですが
wget (url) -O ffd.txt
type ffd.txt|findstr xhmikosr.exe 1> ffd1.txt
for /f "tokens=3-4 delims=_" %%a in ('findstr "xhmikosr.exe" ffd1.txt') do set ver=%%a_%%b
wget -N -c (url)
innounp.exe -x "ffdshow_%ver%_xhmikosr.exe"
move {app}\*.dll C:\Program Files\ffdshow
で最後のmoveのとこでコマンド構文が間違ってますといわれるんですが
何が間違ってるんでしょう




642 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 16:00:18.81 ]
こうだろうな。
move {app}\*.dll "C:\Program Files\ffdshow"

643 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 16:47:28.73 ]
>>642
またやってしまった・・・
ダブルクォーテーションですね
ありがとうございました

644 名前:デフォルトの名無しさん [2012/02/29(水) 20:21:18.27 ]
>>640
おまえ、全然試してないだろ
そのバッチ作ってD&Dしてみろボケ

645 名前:ホイミン mailto:sage [2012/03/01(木) 08:22:30.49 ]
>>644 コマンドプロンプトで test.bat .\* 等と、色々やって試したんだけどね、足りなかったね。
dir がフォルダーを展開してしまうのには、書き込んでから気付いたんだけど、くどいので訂正しなかたんだよ。
使えない書き込みだから、みんな無視するだろうと思っていたよ。
一々反応してくれるのはありがたいけど、君は社会性が無いようだね。


646 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 08:25:30.43 ]
@echo 便所の落書きに(ry&pause

647 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 11:51:26.33 ]
便所の落書きだか知らんが
どう試したんだよw 全然ダメだろw

648 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 13:03:21.98 ]
@echo 便所の落書きに^(ry&pause



649 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 15:15:45.41 ]
dirの/oは引数をソートしないよ

650 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 15:54:15.80 ]
複数のファイルをバッチにD&Dしたら
引数の順番って、どう決まるの?

echo %*

マウスカーソルの位置のファイルが一番目?


651 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:29:17.92 ]
そうよ
2番目以降は並び順、ラップラウンド

652 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:30:26.30 ]
ついでに言うと、1番目ファイルでカレントディレクトリ

653 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 23:10:40.16 ]
バッチにD&Dしたら、カレントディレクトリは
%HOMEDRIVE%%HOMEPATH%が既定値なのでは?

654 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 23:25:46.89 ]
なのではって?そうなるのか?OSは?

655 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 23:30:35.02 ]
すまん。俺のPCは古い化石なんで、Win2000
他のは違うんかも

656 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:04:32.12 ]
カレントディレクトリはバッチに落とした場合とバッチのショートカットに
落とした場合で異なる。

657 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:38:45.35 ]
ショートカットの場合はプロパティで確認できる。
D&Dしたファイルとは無関係なようです

658 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:40:18.10 ]
ショートカットで設定してなければバッチと同じ
当たり前だろ



659 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:56:50.35 ]
だから何?
おれはショートカットの話は別にどうでもいいんだが

660 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 01:15:31.22 ]
カレントディレクトリはバッチに落とした場合とVBSに
落とした場合で異なる。

661 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 01:16:24.16 ]
だから何?
おれはVBSの話は別にどうでもいいんだが

662 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 01:20:45.18 ]
他人のレスの真似するなよ。

663 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 02:36:25.83 ]
なんでvbsは違うんだ?

664 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 02:39:43.76 ]
だから何?
おれはVBSの話は別にどうでもいいんだが

665 名前:デフォルトの名無しさん mailto:saga [2012/03/02(金) 02:53:26.53 ]
>>659
お前バカだろ。起動時のカレントディレクトリはあてにしてはいけないという事だ。
つまり、>>652の情報は何の意味もない。

666 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 02:54:30.97 ]
なんでスレタイ読めないの?
おれはVBSの話は別にどうでもいいんだが

667 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 03:39:03.93 ]
VBSのドロップハンドラがへぼいんだろ

668 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 08:52:29.56 ]
>>665
お前バカだろ。当たり前だろ



669 名前:ホイミン1 mailto:sage [2012/03/02(金) 11:52:24.56 ]
>>649 おお、そうなんだ勉強になったなあ。確認したんだけどなあ。
でもそんなにも僕はうっかり者だったのかと、もう一度確認したけど、ソートされているみたいだよ。
なにか勘違いしているかな? dir が使えなかったのは、変わらないけど。
R:\Ue\Shita>dir /b /on fortest.bat "Shit a2.txt" dirfile.bat
dirfile.bat
fortest.bat
Shit a2.txt

Drug and Drop は absolute で渡されるからいいんだけど、relative path を使った short cut の上に D'nD する際に問題になって、調べた事があるよ。
Drug and Drop は vista 以降で変更されているようだよ。
current directory は、XP 以前では %HOMEDRIVE%%HOMEPATH%、vista 以降では %~dp1 らしいね。
参考 www.hirax.net/diaryweb/2009/06/04.html


670 名前:ホイミン2 mailto:sage [2012/03/02(金) 12:05:26.19 ]
まとめてみたよ。XP では確認した(けど、でもばっちり確認したわけじゃあないから、低レベルな事を言わないで訂正してくれ)よ。
Current Directory in the various cases of launching
______________________ , 2000, _ XP,VISTA,SEVEN
DrugAndDrop___________ , HOME, HOME, _ %1, _ %1
DoubleClick___________ ,Lnchd,Lnchd,Lnchd,Lnchd
DrugAndDrop On ShortCut, HOME, HOME, _ %1, _ %1
DoubleClick Of ShortCut,Lnchd,Lnchd,Lnchd,Lnchd

-Anotation
-ShortCut is in case of the blank of "Start In". If not blanked, current directry follows it.
- HOME: %HOMEDRIVE%%HOMEPATH%
- _ %1: Directory of the 1st argument
-Lnchd: Launched directory (in case of short cut, directory of short cut)

drug and drop の際の問題といえば、全角スペース(他にも有)を含む "file name.txt" などのファイルを Drug and Drop するとクオートされないよね。他にも知ってる問題があったら、教えて。


671 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 14:15:09.54 ]
コマンドとか以前に
× Drug
○ Drag


672 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 19:16:55.25 ]
>current directory は、XP 以前では %HOMEDRIVE%%HOMEPATH%、
explorer processのcurrent directoryでは?

673 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 19:33:17.13 ]
moveでフォルダ移動のときフォルダ名指定に*使えないのは嫌がらせでしょうか

674 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:06:48.04 ]
仕様です

675 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:56:48.46 ]
>>669
俺は >>649 じゃないが、dir の /og は引数をソートしないようだ。
他は知らない。
というか間違いを書き込んで放置している奴が、
他人に社会性云々などと言える立場かよ。
レベルが低くて悪かったね。
便所の書き込みでした。

676 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 01:24:11.63 ]
ドラッグ&ドロップ 前提のバッチファイルならバッチの冒頭とかに
cd /d %~dp0

cd /d %~dp1
とかを状況次第で必要に応じて書き加えていそうなもんだが。
OS による挙動の違いで問題、とかいってる前にしないのかね。


677 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 01:49:25.89 ]
>>669
dir /b /on test\2\2.txt test\1\1.txt
2.txt
1.txt


678 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 03:30:18.27 ]
どうでもいいっす



679 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 05:21:31.12 ]
バージョンの違いだろwあほども

680 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 09:01:15.54 ]
低レベルな事を言わないでくれってさ

681 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 10:50:21.10 ]
>>676
バッチファイルでcd前提の処理は
UNCパスで実行された場合、想定外の動作になる

バッチファイルは相対ダメ
ゼッタイ絶対パス指定すべし

682 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 11:08:26.87 ]
どうでもいいっす

683 名前:634 mailto:sage [2012/03/03(土) 12:11:55.59 ]
>>637
ありがとうございます
教えて頂いた方法でやりたいことが出来ました

好奇心から、異なるディレクトリのものをまとめて送れるランチャーやファイルのリストなどから
同様のことが出来ないものかと機能拡張を試みて試行錯誤していてお礼が遅くなりました
申し訳ございません

改めまして再度質問です。よいお知恵があればご助言お願いします

arg.tmpの内容           list.txt              表示したい結果
"C:\TMP\aaa.txt"        "C:\TMP\abc"         "C:\TMP\abc"
"C:\TMP\abc"          "C:\TMP\aaa.txt"       "C:\TMP\aaa.txt"
"C:\TMP\abc.txt"        "C:\TMP\abc.txt"       "C:\TMP\abc.txt"
"C:\TMP\abc\1ファイル.txt" "C:\TMP\abc\4フォルダ"  "C:\TMP\abd.txt"
"C:\TMP\abc\2ファイル.txt" "C:\TMP\abc\5フォルダ"  "C:\TMP\bbb.txt"
"C:\TMP\abc\3ファイル.txt" "C:\TMP\abc\1ファイル.txt" "C:\TMP\abc\4フォルダ"
"C:\TMP\abc\4フォルダ"   "C:\TMP\abc\2ファイル.txt" "C:\TMP\abc\5フォルダ"
"C:\TMP\abc\5フォルダ"   "C:\TMP\abc\3ファイル.txt" "C:\TMP\abc\1ファイル.txt"
"C:\TMP\abd.txt"        "C:\TMP\abd.txt"       "C:\TMP\abc\2ファイル.txt"
"C:\TMP\abd\123.txt"     "C:\TMP\abd\efg"       "C:\TMP\abc\3ファイル.txt"
"C:\TMP\abd\456.txt"     "C:\TMP\abd\123.txt"    "C:\TMP\abd\efg"
"C:\TMP\abd\efg"       "C:\TMP\abd\456.txt"     "C:\TMP\abd\123.txt"
"C:\TMP\bbb.txt"        "C:\TMP\bbb.txt"       "C:\TMP\abd\456.txt"

arg.tmpのソートの方法がまずいということはわかるのですがどうすればいいのやら。。
以下に書いたバッチを貼ります。少し長いですがご容赦願います

684 名前:634 mailto:sage [2012/03/03(土) 12:12:59.66 ]
@echo off
set argpath=
set arglist=
call >"%~dp0list.txt"
@(for %%a in (%*) do @echo "%%~fa")|sort /o "%~dp0arg.tmp"
for /f "usebackq" %%b in ("%~dp0arg.tmp") do call :sub1 %%b
call :sub2
rem del "%~dp0arg.tmp"
pause&exit /b
:sub1
if not defined argpath (
set argpath="%~dp1"
set arglist=%1
exit /b
)
if %argpath%=="%~dp1" (
set arglist=%arglist% %1
exit /b
)
call :sub2
set argpath="%~dp1"
set arglist=%1
exit /b

685 名前:634 mailto:sage [2012/03/03(土) 12:13:15.16 ]
:sub2
set arglistfile=
for %%c in (%arglist%) do call :sub3 "%%~ac" "%%~fc"
if not defined arglistfile exit /b
for %%d in (%arglistfile%) do >>"%~dp0list.txt" echo "%%~fd"
set arglist=
exit /b
:sub3
set attr=%1
set attr=%attr:~1,1%
if "%attr%"=="d" ( >>"%~dp0list.txt" echo "%~2"
) else ( set arglistfile=%arglistfile% "%~2"
)
set attr=
exit /b

686 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 12:38:57.51 ]
絡んだおれがバカだった
絶対パスで好きにしてくれ

687 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 13:57:54.46 ]
てかいまどきバッチファイルなんか書いてる奴らが総じて底辺。

688 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 14:00:13.55 ]
>>679
テキトーなことぬかすなボケ



689 名前:634 mailto:sage [2012/03/03(土) 15:20:00.58 ]
arg.tmpの内容を "%%~dpa" "%%~fa" としてソートし :sub1 の%1を%2とすることで解決出来ました
こっちのほうが効率がいいとかありましたら指摘お願いします。以下、修正したバッチです

@echo off
set argpath=
set arglist=
set tmpfile="%~dp0arg.tmp"
set output="%~dp0list.txt"
call >%output%
@(for %%a in (%*) do @echo "%%~dpa" "%%~fa")|sort /o %tmpfile%
for /f "usebackq delims=" %%b in (%tmpfile%) do call :sub1 %%b
call :sub2
del %tmpfile%
exit /b

:sub1
if not defined argpath ( goto :jump )
if %argpath%=="%~dp2" ( set arglist=%arglist% %2
exit /b )
call :sub2
:jump
set argpath="%~dp2"
set arglist=%2
exit /b

690 名前:634 mailto:sage [2012/03/03(土) 15:20:35.76 ]
:sub2
set arglistfile=
for %%c in (%arglist%) do call :sub3 "%%~ac" "%%~fc"
if not defined arglistfile exit /b
for %%d in (%arglistfile%) do >>%output% echo "%%~fd"
set arglist=
exit /b

:sub3
set attr=%1
set attr=%attr:~1,1%
if "%attr%"=="d" ( >>%output% echo "%~2"
) else ( set arglistfile=%arglistfile% "%~2"
)
set attr=
exit /b

691 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 18:01:42.04 ]
うざ

692 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 19:48:23.70 ]
%~dpは早退なのかよ

693 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 20:02:34.08 ]
遅刻なのかよ

694 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 20:06:23.02 ]
dir /b /on test\2\2.txt test\1\1.txt
1.txt
2.txt

695 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 21:11:40.93 ]
dir /b /on z:\z.txt y:\y.txt
z.txt
y.txt

696 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 21:39:04.11 ]
dir /b /on z:\* y:\*
z.txt
y.txt

697 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 22:59:19.02 ]
dir /b /on test\2\2.txt test\1\1.txt |sort
1.txt
2.txt


698 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 01:33:17.02 ]
>dir /b /on a.txt b.txt
a.txt
b.txt

>dir /b /o-n a.txt b.txt
b.txt
a.txt



699 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 01:34:32.16 ]
>>698
確かに引数をソートしてるな

700 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 01:37:41.92 ]
>dir /b /on a b
a.txt
b.txt
a.txt
b.txt

>dir /b /o-n a b
b.txt
a.txt
b.txt
a.txt

701 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 01:38:36.31 ]
ディレクトリ単位にソートってことだろ?

702 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 10:23:07.77 ]
>>689 俺もバッチ作ってみた

@echo off & cd /d "%~dp0"
del tmp1 tmp2 list.txt > nul 2>&1
(for %%i in (%*) do @echo "%%~dpi","%%~fi")| sort /o tmp1
set /a a=10000 & set b=""
for /f "delims=, tokens=1,2" %%i in (tmp1) do (
set c=%%i& set d=%%~aj& set e=%%j& call :x)
for /f "delims=, tokens=2" %%i in ('sort tmp2') do echo %%i>> list.txt
del tmp1 tmp2 & goto :eof
:x
if not %b% == %c% set b=%c%& set /a a+=1
if %d:~0,1% == d (set /a f=0) else set /a f=1
echo %a%%f%,%e:~0,-1%>> tmp2

703 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 15:41:04.60 ]
うざ

704 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 16:17:47.60 ]
>>689-690 はファイル名に%文字があると誤動作する

705 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 18:03:47.92 ]
どの行?

706 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 18:07:01.85 ]
あの行

707 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 18:09:41.44 ]
たぶんcallの引数の%が化ける

708 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 19:27:26.60 ]
引数渡しやめて環境変数渡しにすればよい



709 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 23:36:02.16 ]
>>704
ファイル名の%ってどうやって環境変数記号でないと判断させればいいの?

ファイル名内の%の位置を調べて存在したら
^でエスケープするしかない?

710 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 23:38:42.64 ]
%のエスケープは%%だよ

711 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 00:00:12.25 ]
なんでお前らいまだにバッチファイル書いてるの?

712 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 00:12:58.43 ]
バッチファイルは基本だよ

713 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 00:36:58.96 ]
>>709
%%

714 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 00:42:23.44 ]
for変数と混同するんじゃね

715 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 15:40:43.79 ]
このバッチに名前が%文字を含むファイルをD&Dしてごらん
違いが分かるよ

@echo off
set a="%~nx1"
call :x %a%
call :x %%a%%
pause
goto :eof
:x
echo %1


716 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 23:46:11.91 ]
setlocal enabledelayedexpansion
set a="%~nx1"
set a=!a:%%=%%%%!
echo %a%
call :x %a%
call :x %%a%%
pause
exit
:x
echo %1

717 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 23:48:22.26 ]
@echo off
for %%i in (%*) do (set a=%%i& call :x %%a%%)
pause & goto :eof
:x
echo %1


718 名前:デフォルトの名無しさん [2012/03/05(月) 23:49:44.92 ]
^%



719 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 00:07:24.36 ]
@echo off
for %%i in (%*) do set a=%%i& call :x
pause & goto :eof
:x
echo %a%


720 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 00:10:12.82 ]
いつまでやってんだよカス

721 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 00:14:24.77 ]
サンキューカッス

722 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 00:27:17.77 ]
もっと面白いネタは無いのか

723 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 00:42:25.31 ]
ない

724 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 01:06:38.12 ]
とっく枯渇してるので、蒸し返しばっか


725 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 01:13:44.33 ]
でもスレを覗くんですね

726 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 01:28:48.52 ]
でもってなにがでもだ?

727 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 01:34:13.80 ]
新しい知見を得るために覗いていたのか?

728 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 16:34:55.54 ]
よほど無知なんだろ



729 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 17:10:05.33 ]
スレ立てるまでもない質問スレで教えていただいたUNIXコマンドがあります
cat `find あるディレクトリ -name test.txt` > 一つのファイル
これはあるディレクトリ以下の全てのサブディレクトリを含めて、test.txtというファイルの内容を一つのファイルにまとめるコマンドです
Windowsでも同じようにやりたいのですが
copy ファイル1.txt+ファイル2.txt・・・・ marge.txt
といった感じに+でいちいち書いていくのが面倒なのでよい方法内でしょうか?

730 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 17:55:25.05 ]
for /r ディレクトリ %i in (*) do type %i>>test.txt

731 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 18:14:10.14 ]
まんまじゃねーか

732 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 18:18:00.13 ]
え?なんかやる事とやってる事が違うくね?

733 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 18:30:45.73 ]
こまけーことはいいんだよ!

734 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 22:36:25.51 ]
>>730
試してみたんですが
> の使い方が誤ってます
ってエラーがでます

735 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 22:53:00.85 ]
試す前に、なにやってるかくらい読めよ

736 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:03:27.10 ]
すいませんコマンドの部分だけ変えてやったら出来たんですが全てのファイルを一つにコピーできません
for /R %%a in (test.txt) do copy /B %%a+test.txt test.txt

737 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:33:28.10 ]
変えるなよバカ

738 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:40:45.65 ]
試す前に、for/?くらい読めよ




739 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:42:24.85 ]
だったらまともに動くものを書いてくださいよ

740 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:43:45.37 ]
応用のできない奴に何を教えても無駄

741 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:52:11.61 ]
それってあなたが書けないだけですよね?

742 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:54:03.40 ]
あぶく銭は身に付かない

743 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:56:28.18 ]
>>741
その手には乗らないよ

744 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:57:57.96 ]
じゃあ邪魔しないでくださいよ

745 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:00:54.15 ]
邪魔なんかしてないよw猫に小判なだけだろ

746 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:04:26.64 ]
別にバッチファイルの勉強しているわけじゃないのに
くだらないクイズやナゾナゾなんて必要が無いんですよ
質問に答えられないなら邪魔でしかありません

747 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:08:04.61 ]
くだらない質問に誰が答えるって?

748 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:09:55.18 ]
いやにのびてると思ったら……



749 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:15:04.29 ]
別にバッチファイルの勉強しているわけじゃないので
くだらない質問なんて答える必要が無いんですよ

750 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:16:51.61 ]
バッチも使えないならUNIX使ってりゃいいじゃん

751 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:19:23.33 ]
いや俺の認識だとむしろバッチだから使えないだと思う
普通に(無意味に)難しいよ、バッチは

752 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:20:15.83 ]
答えられない人はせめて邪魔しないでもらえますか

753 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:22:00.94 ]
俺、答えられるけど答える気ないだけだから邪魔してもいいよね?

754 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:24:14.98 ]
それは答えられないと等しいですよね
答えられるのなら答えてるわけですから
スレの無駄なんて無能さらすのはツイッターでやってください

755 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 01:07:56.12 ]
marge.txt くすっ

756 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 01:13:23.19 ]
>>729には教えるだけ無駄 できないと等しいですよね
できるならやってるわけですから
スレの無駄なんて無能さらすのはツイッターでやってください

757 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 01:22:21.14 ]
便りの無いのは良い便り

758 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 01:29:04.83 ]
俺っちは>>730で動いたが、感謝の念もない無礼な輩が多いな



759 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 01:42:48.04 ]
動く、という事と、
期待した結果は別なんじゃないかな。

760 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 01:43:55.08 ]
エラーが出たら直せばいいと思うよ不通
それしないで逆切れするなんて以上

761 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 01:48:04.61 ]
期待した結果になるように直せばいいと思うよ不通
それしないで逆切れするなんて以上

762 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 01:49:14.40 ]
逆に、MS-DOSしかしらない人に
UNIXのシェルで作れって言ったら似たような事になると思うよ。

763 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 02:45:02.24 ]
ならんと思うよ。
man findとかちゃんと調べるもん

764 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 02:53:36.94 ]
馬鹿は何やっても駄目だから諦めた方がいいよ

765 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 03:03:25.28 ]
クレクレ君に答えを与えないでくださいw

766 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 03:06:41.93 ]
やるんじゃなかったなw

767 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 03:42:53.07 ]
>>729,734,736,739,741,744,746,752,754
幼稚園からやり直せ

768 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 11:23:59.92 ]
ファイルの結合はcopyだろ
誰がtypeでDOSに文字をかけと言った



769 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 16:33:17.37 ]
だってcatじゃん

770 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 16:35:26.05 ]
便所の書き込みに何を言ってる

771 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 16:38:23.60 ]
自演ならもう少し面白くやってくれくれくん

772 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 16:45:22.53 ]
だったらDOSじゃなくてDOGだろ?

773 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 18:08:10.27 ]
>>755
中学英語からやり直せw

774 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 18:23:21.56 ]
for /r ディレクトリ %i in (test.txt) do type %i>>marge.txt

775 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 18:31:08.06 ]
くそ!どいつもこいつもバカにしやがって!!!!!!!!!

776 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 18:57:22.39 ]
真夜中に2ちゃんでレスの応酬ってw
しかもバッチスレw















出遅れたわw

777 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 19:06:17.90 ]
遅延展開やねw

778 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 19:38:22.80 ]
シフトワーカーはバッチがお好き



779 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 20:48:16.79 ]
こういうのはどうかけますか?
Cドライブに存在する全てのgitフォルダが何個存在するかカウント

780 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 21:08:57.30 ]
エクスプローラで検索したほうが早くないか

781 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 21:44:47.11 ]
単純に検索するとゴミ箱の中まで漁る

782 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 07:03:14.49 ]
cd /d c:\
dir /s /b /ad .git | find /v /c ""

783 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 07:36:08.58 ]
set n=0
for /r c:\ %%i in (.) do if "%%~nxi"=="git" set /a n+=1
echo %n%個

784 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 07:47:05.53 ]
>>782の訂正版
cd /d c:\
dir /s /b /ad git | find /v /c ""

785 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 10:39:13.31 ]
>>783
ifの前に@を付けろ
>>781
for /r はゴミ箱の中まで検索してるな
名前が偶然に一致するなんて、まず無いだろうが

786 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 10:51:38.35 ]
>>783
nxiってなに?

787 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 11:19:32.20 ]
>>786
n
x
i
だけじゃないから、自分で調べろ

for /?

788 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 07:11:46.74 ]
>>782の訂正版
dir /s /b /ad c:\git | find /v /c ""

これでワンライナーOKだった




789 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 10:31:33.67 ]
>>784,>>788
それ、c:\git というフォルダがあったら
その中身しか検索しないよ

790 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:28:30.28 ]
ここで出てきたテクニックをwikiにまとめていただけませんか?

791 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:32:24.24 ]
いただけませんか?とか書きこんでる間にwikihouseかどっか借りてコピペしてけばいいだろ

792 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:55:03.16 ]
えええ俺がwiki借りるの面倒くさいです

793 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:50:20.55 ]
dir abc*
ってやると先頭がabcから始まるファイルがヒットすれば表示されますが
ファイルの途中にabcが存在するようなファイルもヒットさせる方法を伝授してください
xxxabcxxx.txt
abc.xxx.txt
xxx.abc.txt
とか
拡張子が無いファイルとか拡張子にabcが来ることは無いと考えていただいて結構です

794 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 13:04:14.56 ]
dir *abc*

795 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 15:40:42.38 ]
うそこくでねー

796 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 15:49:29.44 ]
ほんとだ

797 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 16:05:44.51 ]
以前はウソだった。最近のcmd.exeは可能。いつからウソじゃなくなったか知らない。

798 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 16:14:51.52 ]
少なくともxpは本当。



799 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 16:19:08.35 ]
今試したら、98SEでも行けた。
大昔(DOS2とかCP/Mとかの時代)はNGだったのは確かだが、
いつOKになったんだろ?

800 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 16:29:00.75 ]
*abc* ぐらい試してから質問しろよ

801 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 16:32:20.65 ]
試したら質問しないだろw

802 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 16:38:06.29 ]
16bit DOSの場合は
dir *abc*.*

803 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 17:55:31.57 ]
バッチファイルでも「最新の情報に更新」(F5キー)を使えますか?

デスクトップのファイルを定期的に別のフォルダに移すバッチファイルを書いたんですが、
ファイルが消えても更新するまでアイコンが残ってしまって・・・

804 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 17:57:57.63 ]
ahk呼んでsendcontrolでもしたら

805 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 17:58:23.49 ]
山口美江さんが亡くなった・・・
おまえらが急に老けたとか言うから

806 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 17:58:43.96 ]
ごめん誤爆

807 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 18:03:59.92 ]
>>803
ふつー残らんよ
でもどうしてっつーなら
createobject("shell.application").windows().item().refreah

808 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 18:13:03.08 ]
バッチでクリップボードの文字列を引数として渡すことはできますか?




809 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 18:23:21.58 ]
for /f %%i in ('〜') do echo %%i
ってこと?
'〜'に
cscript.exe 〜〜
mshta.exe 〜〜
powershell.exe 〜〜
ってすりゃいい どれでも得意なのでどぞ

810 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 18:36:11.79 ]
C:\2012\以下のサブディレクトリも含む全てのファイルの更新履歴が
2012年2月1日0時0分0秒以降になっているものをリストアップするのはbatでできますか?

811 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 18:38:05.77 ]
forfiles/?

812 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 18:43:25.00 ]
Aフォルダに入っているファイルを
Bフォルダにバックアップしたいと考えてます
そこでBフォルダには入っていてAフォルダにないファイルを一覧にしたいのですが
どうやるのでしょうか?

813 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 18:51:10.75 ]
for + if
または
dir + findstr

814 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 19:43:18.94 ]
>>804
ありがとうございます
ごめんなさい、難しくてよくわかりません;;

>>807
ありがとうございます、教えてもらった方法でできました!
'createobject'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と出るのですが、これはこれでいいんでしょうか?
WIN7を使っています。

815 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 20:37:42.34 ]
正常

816 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 20:41:47.70 ]
> refreah


817 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 21:39:36.03 ]
> refresh.vbs

818 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 22:07:54.59 ]
CSVファイルを読み込んで、ちょっとした処理をしたかったのだけど、
読み込む対象のファイル名に半角スペースが入っていた場合どうすればいい?

ここを参考にしたんだけど、
 ttp://vaindespair.blogspot.com/2009/04/blog-post_09.html
半角スペース入りのファイル名だとうまくいかないのです。


・・・と書いてて閃いたw
FOR /F "tokens=1,3 delims=," %%a IN ( 'type "hannkaku space irino file.csv"' ) DO (



819 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 22:22:23.19 ]
FOR /F "usebackq tokens=1,3 delims=," %%a IN ( "hannkaku space irino file.csv" ) DO (
だよーん

820 名前:818 mailto:sage [2012/03/09(金) 22:29:58.17 ]
ありがとう!

821 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 22:58:55.52 ]
forでcsvって難しくないか?
"abc,def","pqr","xyz"
ってなのがあったらモー駄目だろ?

822 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 03:16:58.48 ]
>>812
set a="c:\tmp\Aフォルダ"
set b="c:\tmp\Bフォルダ"
set list="c:\tmp\B-A_list.txt"
call >%list%
for /f "usebackq delims=" %%b in (`dir /a-d /b %b%`) do @if not exist %a:~0,-1%\%%b" >>%list% echo %b:~0,-1%\%%b"

823 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 03:26:27.10 ]
set a="c:\tmp\Aフォルダ"
set list="c:\tmp\B-A_list.txt"
call >%list%
cd /d "c:\tmp\Bフォルダ"
for /f "delims=" %%b in ('dir /a-d /b') do @if not exist %a:~0,-1%\%%b" >>%list% echo "%%~fb"

824 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 04:11:12.36 ]
findstrは?

825 名前: 忍法帖【Lv=14,xxxPT】 mailto:sage [2012/03/10(土) 20:05:58.09 ]
質問です。よろしくお願いします。
バッチファイル(あひゃ.bat)を優先度低で実行させるために
start /b /belownormal あひゃ.bat
と書かれているcmdファイルを作成し、それを実行させているのですが、
あひゃ.batが終了してもDos窓が閉じません。
終了後に自動で閉じるようにするにはどうしたら良いのでしょうか?

826 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 20:10:47.82 ]
start /b /belownormal cmd /c あひゃ.bat


827 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 20:31:41.10 ]
あひゃ.bat

echo %cmdcmdline%
を入れてみりゃ理由がわかる

828 名前:825 忍法帖【Lv=14,xxxPT】 mailto:sage [2012/03/10(土) 21:12:23.08 ]
早速のレス、感謝します。
>>826サンの方法で見事にDos窓が自動で閉じました。
>>827サンのとおりに実行したらなんとなく解ったような気がします。
cmd /k と cmd /c の違いですね。help startとかhelp cmdを読んでないのがバレバレ(;´∀`)

なんとなく思い込みでstartコマンドの/bオプション(ウインドウを作成しない)を付けたのですが、
実はコレ無くても良かったみたいです。(じ、実は/bオプションの意味もよく解っていないっ!(∀`*ゞ)
とにかく期待通りに動いたので満足です。
お二方ともありかとうございました。



829 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 21:13:49.52 ]
batを起動しっぱなしにして
タスクマネージャのタスク名に指定した名前(例えばメモ帳を立ち上げて「無題 - メモ帳」など)が出たら
ログに書き込むというのはbatで出来ますか?

830 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 21:18:31.36 ]
tasklist

831 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:28:53.73 ]
wmic process get name

832 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 14:15:58.30 ]
>>808
WSHと組み合わせないと無理だったはず

833 名前:818 mailto:sage [2012/03/11(日) 23:14:37.36 ]
>>821

そこまで本気なことをするには荷が重いものだと理解してます。
(できるかもしれないけど、数ヵ月or数年後の自分に理解ができない、と思うので)

834 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 00:12:38.31 ]
>>808
clip.exeか類似ソフト使えば出来る

835 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 04:15:25.41 ]
内蔵のclip.exeじゃだめだけどな

836 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 06:41:41.28 ]
スレタイ(ry

837 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 16:34:50.59 ]
>>832
WSHったってIE使ったりして大変だろ?
>>809
お勧めは?

838 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 17:24:09.19 ]
>>837
> WSHったってIE使ったりして大変だろ?

ならば>>809のは全部同類だから「大変」だ



839 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 18:01:20.27 ]
そうなのか?
簡単に書けるものってないのか?

840 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 18:50:35.07 ]
powershellなら簡単よ

841 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 23:45:56.93 ]
for /f "usebackq tokens=1,* delims=[]" %i in (`mshta "javascript:close(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(clipboardData.getData('Text')));"^|find /v /n ""`) do @set "c[%i]=%j"

これでどうだろう

842 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 02:24:40.37 ]
まあまあやね

843 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 02:31:28.01 ]
及第点やね
powershell版もできたら満点や






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

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

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