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


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

ユーザー必読!コマンドライン(DOS Pt.6)



1 名前:名無し~3.EXE mailto:sage [2007/04/14(土) 22:52:56 ID:hbxFcMHM]
適材適所で GUI と CUI を組み合わせて、 (゚д゚)ウマー

前スレ
1 pc.2ch.net/win/kako/1002/10023/1002392089.html
2 pc5.2ch.net/win/kako/1013/10138/1013833995.html
3 pc8.2ch.net/test/read.cgi/win/1062775949/l50
4 pc8.2ch.net/test/read.cgi/win/1116131036/l50
5 pc11.2ch.net/test/read.cgi/win/1152544955/l50

DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
コマンドラインインタフェースに関するネタならなんでもOK。

質問も歓迎だけど、自分で調べて勉強する努力も忘れずに。

2 名前:名無し~3.EXE mailto:sage [2007/04/14(土) 22:53:39 ID:hbxFcMHM]
関連スレ

バッチファイルプログラミング 3.bat
pc11.2ch.net/test/read.cgi/tech/1148485555/l50

■★▲DOSはまだ現役! Drive.B:
pc11.2ch.net/test/read.cgi/os/1046875141/l50


3 名前:名無し~3.EXE mailto:sage [2007/04/14(土) 22:55:18 ID:hbxFcMHM]
初心者〜管理者まで必読!コマンドライン(DOS Pt.6)
と入れようとしたら、
「サブジェクトが長過ぎます」
と警告されて、スレがたてられなかったので、上記のように変更しました。

4 名前:名無し~3.EXE mailto:sage [2007/04/15(日) 10:32:11 ID:SIUF16m0]


5 名前:名無し~3.EXE mailto:sage [2007/04/15(日) 18:28:27 ID:OzCFcZOC]
名無し~3.EXEは良くない
名無し~3.COMか名無し~3.BATにするべきだ


6 名前:名無し~3.EXE mailto:sage [2007/04/15(日) 18:55:01 ID:P6RjSyHQ]
rundll32 kernel32.dll,SetSystemPowerState
は効かないのはなぜだろ

7 名前:名無し~3.EXE mailto:sage [2007/04/16(月) 05:35:16 ID:QcQIt7Ek]
Win2000 & IME2000 な環境で
キーボードのプロパティと MS IME 2000 のプロパティを
コマンドラインから呼ぶ方法ってある?


8 名前:名無し~3.EXE mailto:sage [2007/04/16(月) 09:05:09 ID:YwiqOVSM]
キーボードのプロパティは control keyboard
IME2000は知らないがプロパティ開いた時にタスクマネージャ等で
起動プロセス名を確認したらいいんじゃないかな

9 名前:名無し~3.EXE mailto:sage [2007/04/16(月) 20:38:24 ID:lm+JRBwI]
できたできた。ありがとう。

>8のとおりキーボードのプロパティは
control.exe keyboard で、IME2000 は
IMEJPUEX.EXE で行けた。

話は変わって、前スレで XP から 2000に
TASKKILL, TASKLIST をコピーすれば使える的な
話が出てたけど、XP じゃないと使えませんって
メッセージが出て無理だったよ。
バージョン次第なのかもしれないけど一応報告。


10 名前:名無し~3.EXE mailto:sage [2007/04/22(日) 17:26:15 ID:gGQB4N53]




11 名前:名無し~3.EXE mailto:sage [2007/05/04(金) 03:38:10 ID:DU0ceJxS]
すいません
for文で` " `(二重引用符)を区切り文字にしたいのですが、
for /f "delims=^"" %%A
と書いてもうまくいきません。
他にも一重引用符や逆引用符でくくってみたのですが、結果は同じでした
Cueシートを参照したいのでどうしても二重引用符を区切り文字にしたいのですが
どうにかならないでしょうか?

12 名前:名無し~3.EXE mailto:sage [2007/05/04(金) 05:44:13 ID:Hk96JH7Z]
どうにかすることも出来るけど、cueシートの操作はwshとかの方がいいよ

13 名前:11 mailto:sage [2007/05/04(金) 07:58:10 ID:DU0ceJxS]
>>12
wshというものの存在をはじめて知りました…勉強して出直してきます

ただCueシートから参照した文字列を、最終的にCLIアプリケーションに送りたいのですが、
Windows Script Hostというのはそういったことも可能なのでしょうか?

14 名前:名無し~3.EXE mailto:sage [2007/05/04(金) 08:05:45 ID:KUqa9e+R]
その前で一旦何かに置換しとけば?
たとえば、
set xxx=%aaa:"=,%

15 名前:名無し~3.EXE mailto:sage [2007/05/04(金) 08:08:03 ID:Hk96JH7Z]
>>13
可能だよ

16 名前:11 mailto:sage [2007/05/04(金) 08:37:14 ID:DU0ceJxS]
>>14-15
やりかたが悪いのかもしれませんが、置換ではうまくいきませんでしたorz
見識を深めると思って素直にwshを勉強します。
ありがとうございました

17 名前:名無し~3.EXE [2007/05/04(金) 16:01:49 ID:SLT3oq8P]
教えていただきたいことがあります。

shutdown -s -t 0
をバッチファイルで実行すると、
C:\>shutdown -s -t 0
が、繰り返し表示されるだけでWindowsが終了しません。

次に、
echo a
shutdown -s -t 0
echo b
を、バッチファイルで実行すると、
C:\>echo a
a
C:\>shutdown -s -t 0
が繰り返し表示されるのみでWindowsが終了せず、またecho bまで到達して
いないように見えます。
shutdown -sをバッチファイルで実行して、Windowsを終了させるにはどうしたら
いいのでしょうか。


18 名前:名無し~3.EXE mailto:sage [2007/05/04(金) 16:23:49 ID:KUqa9e+R]
エスパーな俺がお前のBATファイル名はshutdown.batだと透視した。

19 名前:名無し~3.EXE mailto:sage [2007/05/04(金) 16:29:21 ID:6iB+pe0c]
>>18
キミ、マジで天才

20 名前:17 mailto:sage [2007/05/04(金) 16:42:26 ID:SLT3oq8P]
>>17
思わず後ろを振り返っちまっただよ。

カレントディレクトリの方がPATHのディレクトリ群よりも優先されるということ
ですか?



21 名前:名無し~3.EXE mailto:sage [2007/05/04(金) 19:43:35 ID:EyJempdz]
>20
爆笑。

22 名前:名無し~3.EXE mailto:sage [2007/05/04(金) 21:43:22 ID:R5kvvwgs]


23 名前:名無し~3.EXE mailto:sage [2007/05/05(土) 15:50:54 ID:kP//l2AG]
un信じrable

24 名前:名無し~3.EXE mailto:sage [2007/05/07(月) 19:25:07 ID:Num9bxOL]
自問自答自讃でもいいから新ネタでお願いします

25 名前:名無し~3.EXE mailto:sage [2007/05/08(火) 21:33:06 ID:sjfhnHyh]
ネタ投下
md con.\
ってどういう理屈でそういう結果になるの?

26 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 01:16:38 ID:Hl8Z3A4f]
conはMSDOS予約デバイス名。
昔conconバグがブラクラに流用されてWindowsが落とされる問題が頻発した。
conconバグは修正されたが、Windowsには予約デバイス名を含むファイル名の
扱いに今なおバグが潜んでいる。
よって>>25の挙動も単なるバグ。

と実行もしていないのに言ってみるテスツ

27 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 12:01:51 ID:bjubhlyI]
教えていただきたいことがあります。
WIN2Kでレジストリの内容を読み出して環境変数に値をセットしたいのですが
"C:\Documents and Settings"のように値に空白が含まれていると
ググって拾ったバッチでは、うまく動きません。
とりあえず
REG QUERY サブキー エントリ | SED エントリで抜く > 一時ファイル
for /f "delims=," %%f in (一時ファイル) DO SET REG=%%f
で目的は果たしたのですが
for文のコマンドの中にパイプが組み込めないので
バッチが2行になり、なんとなく負けた感じがするので
一時ファイルを作成しないことを前提に
1.REG.EXE 以外は、標準コマンドもしくはマイクロソフト提供ツールを使用
または
2.フリーのツールを使用
上記の条件でバッチでレジストリの内容を環境変数に値をセットする方法ってあるのでしょうか?

28 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 12:26:22 ID:eIs+wjw8]
昔はパイプ使ってても、実際には一時ファイルが作られていたけど
最近のはさすがにそんなことはないのだろう。

>>27 へのレスは
「わかりません」。


29 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 13:20:42 ID:fkBIoDjl]
>>27
> for文のコマンドの中にパイプが組み込めないので

パイプを^でエスケープ

30 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 17:12:00 ID:ADeKrMMD]
>>27
>パイプ
SED使わずにやればいいのに

>?
つwsh
またはwmic.exe(?) ←2000で使えたっけ?




31 名前:27 mailto:sage [2007/05/09(水) 18:13:37 ID:bjubhlyI]
>>28-30
レスdクス

>>30
>SED使わずにやればいいのに

例えば REG QUERY サブキー "SENDTO" の出力が
-ここから-----------------------

! REG.EXE VERSION 3.0

サブキー
空白 SENDTO タブ REG_SZ タブ C:\Documents and Settings.......
-ここまで-----------------------
と出てくるので C:\Documents and Settings....... を
SEDを使わずに取り込む方法のご教示をお願いします。

32 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 18:51:00 ID:ADeKrMMD]
for /f "tokens=1-2*" %%1 in ( ) do if %%1=SENDTO set reg=%%3
かな?


33 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 19:01:53 ID:0CVMi5If]
setlocal
for /f "skip=4 tokens=3 delims= " %%I in ('reg query 完全キー名 /v 値名') do set reg%%I
echo %reg%
endlocal

34 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 19:05:05 ID:0CVMi5If]
2行目
set reg=%%I
に修正して。
それとdelims=の後には空白ではなくTabが入ってる。

35 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 19:19:38 ID:fkBIoDjl]
>>32
skip=4の方がシンプルでいいと思うけど

>>33-34
値にタブが入ってるとアウト

36 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 19:34:54 ID:0CVMi5If]
>>35
なるほど。でもファイルパスって前提があるのでは?
そういうこと言ったら、キー名に空白が入ってたらアウトってのも言える。

37 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 19:36:28 ID:0CVMi5If]
キー名じゃなくてキーの値の名前だったorz

38 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 19:58:27 ID:fkBIoDjl]
>>36
> ファイルパスって前提

そういやそうだった…orz
35は忘れてくれ

39 名前:名無し~3.EXE mailto:sage [2007/05/09(水) 19:58:51 ID:0CVMi5If]
文句だけ言って修正方法を示してなかった。

for /f "skip=4 tokens=2* delims= " %%I in ('reg query 完全キー名 /v "値名"') do set reg=%%J

40 名前:27 mailto:sage [2007/05/09(水) 20:21:29 ID:bjubhlyI]
>>32-39
レスdクス

>>32
>for /f "tokens=1-2*" %%1 in ( ) do if %%1=SENDTO set reg=%%3

for /f "tokens=1-2*" %%1 in ( ) do if %%1==SENDTO set reg=%%3
ですよね

全部の方法で出来ました。
ご教示ありがとうございました。




41 名前:名無し~3.EXE mailto:sage [2007/05/11(金) 11:16:52 ID:stFG0Iol]
schtasksでタスクを登録するときに、「タスクの実行時にスリープを解除する」をONにするにはどうしたらいいですか。

42 名前:名無し~3.EXE mailto:sage [2007/05/11(金) 15:16:11 ID:Fg7QQDj2]
>>41
jt.exeを使用して、プロパティにSystemRequired=1を指定する。
www.windows-world.jp/ms_support/-/18422-2.html

-- Sample.txt ----------------
!SD Sample.job
/CTJ StartDate = Today StartTime = NOW Disabled = 0 Type = Daily TypeArguments = 1
/SJ SystemRequired=1 ApplicationName = Notepad.exe WorkingDirectory = C:\ Comment = "サンプル ジョブ" Creator = "名無し~3.EXE" Priority = Normal MaxRunTime = 86400000 DeleteWhenDone = 1
/SC (コンピュータ名)\(アカウント名) (パスワード)
/SAJ Sample.job
/PJ
------------------------------

>jt @sample.txt
>jt /lj %systemroot%\tasks\sample.job /pj

43 名前:名無し~3.EXE mailto:sage [2007/05/11(金) 20:20:42 ID:stFG0Iol]
>42
どうもありがとうございます。
やってみます。

44 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 00:43:43 ID:XMJhZ/Pp]
環境変数を展開させないようにすることってできるんでしょうか?
(例えば mkdir %USERNAME% とやると %USERNAME% というフォルダが作成される etc)

45 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 00:51:50 ID:66G3PQU8]
コマンドプロンプトとバッチファイルで異なる
^を適当に入れてコマンドプロンプトでは変数名を一致させないようにする
mkdir %^USERNAME%
とか
バッチファイルでは%を%%でエスケープする
mkdir %%USERNAME%%


46 名前:名無し~3.EXE [2007/05/14(月) 01:15:57 ID:6p7JJnAY]
FOR文のセットでコマンドを指定するとき、そのコマンドの引数に全角文字(日本語)は指定できないのでしょうか?

バッチファイル内で、たとえば、
dir /B "C:\ほげ\*"
と記述して実行したときは問題なく「C:\ほげ」内を一覧表示してくれるのですが、
その中のファイルに対して操作したいときに
for /F "skip=2" %%A IN ('dir /B "C:\ほげ\*"') do (
echo %%Aとかいろんな処理
)
とすると、「ファイルが見つかりません」と表示されます。
セットの部分だけを(dir /B "C:\hoge\*"')と書き換えると
「C:\hoge」内に対して問題なく処理できるので、
この引数以外の部分については特に問題ないと思います。

どなたかアドバイスよろしくお願いします。

47 名前:46 mailto:sage [2007/05/14(月) 01:20:12 ID:6p7JJnAY]
ちなみに、引数の部分のみ変数に入れてもダメでした。
set FILEPATH=C:\ほげ\*
for /F "skip=2" %%A IN ('dir /B "C:\ほげ\*"') do .....
でも「ファイルが見つかりません」と出ます。

どうしようorz。

48 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 01:20:24 ID:MCFCwKH0]
ほげを省略せずに具体的な値を出せばどうかな?
おそらく、そのパスの中にスペースが入ってるとかでは?"delims="

49 名前:46 mailto:sage [2007/05/14(月) 01:56:09 ID:6p7JJnAY]
即レスありがとうございます。>>48
delims=を指定しないとスペースで結果が勝手に区切られてしまうのは見落としていました。
どうもありがとうございました。
ですが、あれからいろいろためしてみましたが未だに解決しておりませんorz。

実際にFILEPATHに入れた値ですが、「D:\bkuptest\ほげ\bkup_ほげ_\」です。
for /F "skip=2 delims=" %%A IN ('dir /B /O:-N "%FILEPATH%"') do (
echo %%A
)
と書いて実行したところ、「ファイルが見つかりません。」といわれて中の処理は実行されません。
また、その直前の行に「dir /B /O:-N "%FILEPATH%"」をそのままコピーして追加したところ、
この追加したdirは問題なく実行されました。

そのままコピーしてもFOR文のセットに指定するとダメなんて・・・orz。
どなたかアドバイスありましたらよろしくお願いします。

50 名前:46 mailto:sage [2007/05/14(月) 01:57:05 ID:6p7JJnAY]
書き忘れましたが、
set FILEPATH=D:\bkuptest\ほげ\bkup_ほげ_\
を直前に記述しています。
よろしくお願いします。



51 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 02:22:40 ID:MCFCwKH0]
D:ドライブが無いので、Z:ドライブに変更して実行してみたが

set FILEPATH=Z:\bkuptest\ほげ\bkup_ほげ_\
for /f "delims=" %%A in ('dir /B /O:-N "%FILEPATH%"') do (
echo %%A
)
これでちゃんと表示されたよ。(WindowsXP)

52 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 03:11:22 ID:MCFCwKH0]
Windows2000だと、forのコマンド解析のバグなのか一部の日本語を使うとおかしくなるね。
日本語1文字(2バイト)につき1バイトずつ減るようだ。
set FILEPATH=Z:\bkuptest\ほげ\bkup_ほげ_\
dir /B /O:-N "%FILEPATH%>tmp.txt
for /f "delims=" %%A in ('type tmp.txt"') do (
echo %%A
)
とするしかないのかも。

53 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 03:28:34 ID:MCFCwKH0]
この場合、4バイト減るので後ろにダミー文字4文字をくっ付ければ通る。
for /f "delims=" %%A in ('dir /B /O:-N "%FILEPATH%"1234') do (

トリッキーだが、
for /f "delims=" %%A in ('dir /B /O:-N "%FILEPATH%"^&::::::::::::::::::::::::::::') do (
とでもすれば汎用で通るようになる。

54 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 03:29:57 ID:66G3PQU8]
FORの問題なら遅延展開にすれば回避できるかも
ただしIN ('コマンド')はサブシェルで実行されるので
IN ('cmd /v:on /c dir /b "!filepath!"')
みたいに

55 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 03:34:38 ID:66G3PQU8]
あとパイプを使う方法もありかな
dir ... | for ... in ('more')
でもパイプはいろいろ難しいことがあるから使わずに済めば
それに越したことはない

56 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 03:49:41 ID:66G3PQU8]
そうだ所詮サブシェルで実行されるので%%で遅延展開すれば済むね
IN ('dir /b "%%filepath%%"')
みたいに


57 名前:46 mailto:sage [2007/05/14(月) 12:39:32 ID:6p7JJnAY]
>>51-56
Windows2000だったのでご指摘の問題があったようです。
%%FILEPATH%%としたところ問題なく動きました。
どうもありがとうございました。

58 名前:名無し~3.EXE [2007/05/14(月) 21:03:27 ID:eTP8kcfM]
こんばんわ。

hogehoge20070514hogehoge.dmpのような日付入りファイル名が
毎日作られるフォルダで、最新のファイルから3ヶ月より古いファイルを
削除するバッチファイル作成するのですが
頭の中でアルゴリズムができてるのですがいまいち実現までいきません・・
for /f "skip=93" %%F in ('dir /b /o-n') do del %%F
で約3ヶ月分以降を消すっていうのでは依頼者が納得しないそうです。

ディレクトリの中で最終更新日が一番新しい物を見つけてそれをsetで変数に
入れる方法を教えてくれませんか?
そのあとは自分でいろいろ考えてみます。

59 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 23:16:54 ID:MCFCwKH0]
>>58
依頼者とか言うからには、君ソフトウェア設計者なんだろ?
じゃあそれらしくちゃんとした質問しろよ。
・前提条件として、外部プログラム(GNU等フリーソフト)を使っても構わないのか
  またはJava/VBスクリプトの使用は?
・対象OSは?
・それと標準BATコマンドのみだとしても、アルゴリズムも全然できてないじゃん。
 出来てたら終わってるはず。
 素直なアルゴリズムの例を一つ示してやるから後は自分で調べろ。

 step1: 今日の日付を求める
 step2: 今日の日付をある基準日を0日とする通算日付に変換する(一般化するとユリウス日)
 step3: 3ヶ月前が何日分前か求める
 step4: step2からstep3を引いてターゲット日として保存する
 step3: 以下をファイルの存在する限り繰り返す
 step4:   ファイル名から日付を取り出す
 step5:  日付を通算日付に変換する
 step6:  ターゲット日と比較する(ループ中なので遅延環境変数展開を必要とする)
 step7  より小さい日付なら削除する

日付変換サブルーチン
・日付を、年、月、日に分解する
・各月の日数 31,28,31,30,31,30,31,31,30,31,30,31
・4で割り切れる年はうるう年 2月は29日
・100で割り切れる年はうるう年ではない
・2000で割り切れる年はうるう年
・オプションで、特殊日付をサポートする(-1月とか13月とか35日とかも受け付ける)
・日数を返す

これを素直に実現してもいいし(メンテが楽)、一意の変換式としてもある。

60 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 23:22:12 ID:MCFCwKH0]
・4で割り切れる年はうるう年
・100で割り切れる年はうるう年でない
・400で割り切れる年はうるう年
・2000で割り切れる年はうるう年ではない
の間違い



61 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 23:26:54 ID:MCFCwKH0]
すまそ
・2000で割り切れる年はうるう年ではない
は間違いのようだ。記憶違いだったみたい。

62 名前:名無し~3.EXE mailto:sage [2007/05/14(月) 23:40:16 ID:MCFCwKH0]
質問の直接の回答だが、

%%~tI : %%Iのファイルの最終更新日

63 名前:名無し~3.EXE mailto:sage [2007/05/15(火) 00:31:30 ID:dFS1GUhg]
キミ、マジで天才

64 名前:名無し~3.EXE mailto:sage [2007/05/15(火) 01:12:22 ID:GKCxdgkd]
>>58のはファイル名に入ってる日時を基準にしたいのか、ただ単に例として挙げただけで
ファイル名全然関係なくて更新日時だけ相手にしてりゃいいのか、ようわからんわ。

65 名前:名無し~3.EXE mailto:sage [2007/05/15(火) 09:33:45 ID:TTbohgLv]
サブルーチンだけ作ってみた。バグがあるかもしれんが。(WindowsXP)

@echo off
rem パラメタ %1: YYYYMMDD または YYYY/MM/DD 日付
rem パラメタ %2: -d -m 差分区分(-d:日数 -m:月数)
rem パラメタ %3: 差分数
rem 返り値 %YYYYMMDD%, %days% 計算後の文字列日付と通算日数
rem
rem 西暦2000月3月1日を基点に日数計算
rem 1年は3月から始まり2月で終わることとする
rem --------------------------------------------------
rem   3  4  5  6  7  8  9 10 11 12 01 02月  月号
rem   0  1  2  3  4  5  6  7  8  9 10 11月  新月号
rem   31 30 31 30 31 31 30 31 30 31 31 28
rem   0 31 61 92 122 153 184 214 245 275 306 337   年頭からの通算日
rem --------------------------------------------------

setlocal EnableDelayedExpansion
set days_table=312831303130313130313031
set YYYYMMDD=%1
set YYYYMMDD=%YYYYMMDD:/=%
set YY=%YYYYMMDD:~0,4%
set MM=%YYYYMMDD:~4,2%
set DD=%YYYYMMDD:~6%
if "%MM:~0,1%"=="0" set MM=%MM:~1%
if "%DD:~0,1%"=="0" set DD=%DD:~1%



66 名前:名無し~3.EXE mailto:sage [2007/05/15(火) 09:34:46 ID:TTbohgLv]

if "%2" equ "-d" (
call :ADtoTD %YY% %MM% %DD%
set /a days = !days! + %3
call :TDtoAD !days!
goto :end
)

if "%2" neq "-m" (
call :ADtoTD %YY% %MM% %DD%
goto :end
)

set /a Y1 = %3 / 12
set /a Y2 = %3 %% 12
set /a YY += Y1
set /a MM += Y2
if %MM% LEQ 0 set /a YY -= 1, MM += 12
if %MM% GTR 12 set /a YY += 1, MM -= 12
set /a mon = (MM - 1) * 2
set max=!days_table:~%mon%,2!
if %MM%==2 (
set /a mod4 = %YY% %% 4
set /a mod100 = %YY% %% 100
if !mod4! neq 0 goto xxx
if !mod100! equ 0 goto xxx
set /a max += 1
)


67 名前:名無し~3.EXE mailto:sage [2007/05/15(火) 09:36:01 ID:TTbohgLv]

:xxx
if %DD% GTR %max% set DD=%max%
set MM=0%MM%
set MM=%MM:~-2%
set DD=0%DD%
set DD=%DD:~-2%
set YYYYMMDD=%YY%%MM%%DD%
call :ADtoTD %YY% %MM% %DD%

:end
endlocal & set YYYYMMDD=%YYYYMMDD% & set days=%days%
echo %YYYYMMDD%
goto :eof



68 名前:名無し~3.EXE mailto:sage [2007/05/15(火) 09:36:43 ID:TTbohgLv]

rem -----------------------------
rem 西暦を通算日に変換する
rem -----------------------------
:ADtoTD
set totaldays_table= 00 31 61 92122153184214245275306337
set /a YY = YY - 2000
if %MM% LEQ 2 set /a YY -= 1
set /a MM = (MM + 9) %% 12

set /a days = YY * 365 + (YY / 4) - (YY / 400)
set /a mon = MM * 3
set /a days += !totaldays_table:~%mon%,3! + %DD% - 1
endlocal & set days=%days%
goto :eof



69 名前:名無し~3.EXE mailto:sage [2007/05/15(火) 09:37:29 ID:TTbohgLv]
rem -----------------------------
rem 通算日を西暦に変換する
rem -----------------------------
:TDtoAD
set days=%1
set /a d1 = days / 146097
set /a a1 = days %% 146097
set /a d2 = a1 / 36524
set /a a2 = a1 %% 36524
if d2 equ 4 set /a d2 -= 1, a2 += 36524
set /a d3 = a2 / 1461
set /a a3 = a2 %% 1461
set /a d4 = a3 / 365
set /a a4 = a3 %% 365
if d4 equ 4 set /a d4 -= 1, a4 += 365
set /a d5 = a4 / 153
set /a a5 = a4 %% 153
set /a d6 = a5 / 61
set /a a6 = a5 %% 61
set /a d7 = a6 / 31
set /a a7 = a6 %% 31

set /a YY = 400*d1 + 100*d2 + 4*d3 + d4 + 2000
set /a MM = 5*d5 + 2*d6 + d7 + 3
set /a DD = a7 + 1
if %MM% GTR 12 set /a MM -= 12 , YY += 1
set MM=0%MM%
set MM=%MM:~-2%
set DD=0%DD%
set DD=%DD:~-2%
endlocal & set YYYYMMDD=%YY%%MM%%DD%
goto :eof

70 名前:名無し~3.EXE mailto:sage [2007/05/15(火) 09:51:27 ID:TTbohgLv]
補足
>>59のアルゴリムは少し考えが足りなかったので、サブルーチン側で差分日まで
算出し、その日付を返すようにした。 環境変数 %YYYYMMDD%

使い方 BAT名を仮にgetdate.batとすると

2ヶ月前の日付を求める場合
getdate 20070515 -m -2

63日後の日付を求める場合
getdate 20070515 -d 63



71 名前:名無し~3.EXE mailto:sage [2007/05/16(水) 12:56:13 ID:7/cOdyGm]
自演?

72 名前:名無し~3.EXE mailto:sage [2007/05/17(木) 18:11:54 ID:xG9pEqHy]
wsh使ったほうが簡単なのにご苦労さん


73 名前:名無し~3.EXE mailto:sage [2007/05/17(木) 18:29:25 ID:818pu52B]
ちゃんと月数で日にちまで補正してくれるね。

20080331 -m -1 = 20080229

20080331 -m -13 = 20070228

74 名前:名無し~3.EXE mailto:sage [2007/05/17(木) 18:43:17 ID:818pu52B]
>>72
>・前提条件として、外部プログラム(GNU等フリーソフト)を使っても構わないのか
>  またはJava/VBスクリプトの使用は?
と聞いてるので、そこら辺はちゃんと分かっていて、敢てBATのみで作成したのでは?

75 名前:名無し~3.EXE mailto:sage [2007/05/18(金) 12:18:21 ID:N8xUsF93]
あるフォルダの中にあるファイルの名前全てに環境変数を設定したいと思い、自分なりに調べて
記述してみました。多分間違っていると思うので間違っている箇所を指摘していただけませんか?

rem フォルダ名:abc フォルダの中のファイル名:aaa.jpg bbb.jpg ccc.jpg
rem フォルダの絶対パス:c:\abc
rem bat名:aaa.bat
@echo off
set list=
for %%I in (c:\b\*) do call set list=%%list%%;%%~nI
echo %list%
pause
rem 実行結果「;aaa;bbb;ccc」

%list%がaaa、bbb、cccという文字列全てを指すという状況を作りたいです。
(違うフォルダ内のファイル名と比較して同名の物があればリネームというのをやってみたいので。)
よろしければどなたか間違いを指摘していただけませんか?


76 名前:名無し~3.EXE mailto:sage [2007/05/18(金) 12:19:57 ID:N8xUsF93]
すみません
for %%I in (c:\abc\*) do call set list=%%list%%;%%~nI
でした

77 名前:27 mailto:sage [2007/05/18(金) 17:26:22 ID:QurTryuC]
ネタ投稿!
教えていただきたいことがあります。
SREP / 標準入力ファイルをコマンドに渡して実行 ttp://dmz.xrea.jp/dahlia/soft/index_s.html#SREP
このソフトは、DOS・95・98で動いていて重宝していたのですが、WIN2K以降で動きません。
ECHO:DIR *.* | SREP -BX を実行すると DIR *.* の動作をします。

:SETTEMP
SET TEMPBAT=%RANDOM%
IF
ECHO:DIR *.* >



78 名前:27 mailto:sage [2007/05/18(金) 17:38:32 ID:QurTryuC]
途中で書き込みしてしまいました。
ネタ投稿!
教えていただきたいことがあります。
SREP / 標準入力ファイルをコマンドに渡して実行 ttp://dmz.xrea.jp/dahlia/soft/index_s.html#SREP
このソフトは、DOS・95・98で動いていて重宝していたのですが、WIN2K以降で動きません。
ECHO:DIR *.* | SREP -BX を実行すると DIR *.* の動作をします。

:SETTEMP
SET TEMPCMD=%RANDOM%.CMD
IF EXIST %TMP%\%TEMP.CMD% GO TO :SETTEMP
ECHO:DIR *.* > %TMP%\%TEMP.CMD%
%TMP%\%TEMP.CMD%
でやっていますが
これを一時ファイルを作成しないで1行で実行する方法ってあるのでしょうか?
ECHO:DIR *.* の部分はいろんなパターンがあります。


79 名前:名無し~3.EXE mailto:sage [2007/05/18(金) 18:57:24 ID:U0IwhG1h]
>>78
DIR *.*


80 名前:27 mailto:sage [2007/05/18(金) 19:54:01 ID:QurTryuC]
>>79
レスdクス

行数が長くなって内容を省いていたので命題そのものを説明します。

A.CSV
あああ,111,222,....................................
いいい,222,333,....................................
あああ,111,333,....................................
ううう,333,444,....................................

というCSVファイルから

あああ.CSV
111,222,....................................
111,222,....................................

いいい.CSV
222,333,....................................

ううう.CSV
333,444,....................................

のように元CSVファイルの一列目の名前でファイル名を作り、二列目以降のデータを内容にするバッチを
SEDとUNIQとSORTとSREPを組み合わせて作っていましたが(ECHO:DIR *.*に当たる部分)
WIN2KでSREPが使えないための代替手段を探しています。




81 名前:名無し~3.EXE mailto:sage [2007/05/18(金) 20:18:56 ID:U0IwhG1h]
>>80
set x=DIR *.*
%x%
または
echo DIR *.*|cmd.exe

82 名前:名無し~3.EXE mailto:sage [2007/05/18(金) 21:33:23 ID:qUpsnBjq]
これでできそうな気がするが、「>」とか含まれてるとダメぽ

for /f "tokens=1* delims=," %%A in ('type a.csv') do echo>>%%A.csv %%B

83 名前:名無し~3.EXE mailto:sage [2007/05/18(金) 21:45:26 ID:99LGC3ci]
それ以前にこの順で書くとダメぽ
do echo>>%%A.csv %%B

84 名前:名無し~3.EXE [2007/05/19(土) 12:44:30 ID:wGTZ/mM4]
Windows2000でUserグループのアカウントでログインしているときに
shutdown.exe -s -t 0で電源を切ることは可能なのでしょうか?

ぐぐってみたところ、WindowsXPについているshutdown.exeはWindows2000でも利用可能なようなのですが、
Windows2000で試してみたところ、権限がないと言われてしまいます。
事情により、Administratorsに入れるわけには行かないのですが、
このような場合でもコマンドで電源を切ることは可能でしょうか?
どなたかご存知の方アドバイスお願いします。

85 名前:名無し~3.EXE mailto:sage [2007/05/19(土) 13:13:12 ID:gV4BneKY]
>>84
もう結論が出てるじゃないですか。
他のものを試してみては。

Windows 2000/XP でログオフ/シャットダウン/再起動アイコンを作るには?
homepage2.nifty.com/winfaq/w2k/boot.html#1179
タイマー指定可能な小型軽量シャットダウンコマンド
www.vector.co.jp/soft/win95/util/se190882.html
お勧めのシャットダウン プログラム
homepage2.nifty.com/kotkaga/note/604shutdown.html

86 名前:名無し~3.EXE mailto:sage [2007/05/19(土) 18:20:22 ID:MzggPKBH]
>>84
無理

87 名前:名無し~3.EXE mailto:sage [2007/05/19(土) 18:59:01 ID:MEXVxhB1]
runas.exe
ショートカット詳細設定別の資格情報で実行する
タスクスケジューラ

88 名前:名無し~3.EXE mailto:sage [2007/05/20(日) 02:19:36 ID:Zd3Z0KcV]
>>87
制限ユーザーにAdminのユーザー名とパスワード知られたら意味ないじゃん。

89 名前:名無し~3.EXE mailto:sage [2007/05/20(日) 04:42:27 ID:dWDzVb/9]
あるフォルダの中の複数のファイルの更新日が30日以上前のものは
削除するというバッチファイルを作ることは可能でしょうか?
もしよろしければヒントをいただけませんか?

90 名前:名無し~3.EXE mailto:sage [2007/05/20(日) 05:38:46 ID:aqxTfgS4]
ヒント:過去ログ




91 名前:名無し~3.EXE mailto:sage [2007/05/21(月) 14:08:21 ID:0d+ZaNGt]


92 名前:名無し~3.EXE [2007/05/22(火) 23:57:15 ID:DXps0jfC]
age失礼します。

FOR /F %A IN (A.txt) DO FINDSTR %A B.txt

のようにAから取った文字列をB内で拾おうとしてます。
Aに書かれている1行には半角スペースが含まれてます。
その半角スペースも含めて1行をマッチング(完全一致ではない)させたいのですが、
実行してみた結果、半角スペース前の文字列だけでもマッチングしてしまい
取りたくない行を拾ってきてしまいます。

半角スペースを含む1行をマッチングさせるには
どのようにしたらよいのでしょうか?

93 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 00:15:21 ID:SSq40r1e]
findstr /?

そのものズバリの例が示されているわけだが

94 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 00:25:56 ID:9lvFrJAs]
うむ。findstrだけでじゅうぶん。for要らない。
つーかここにいるとfor病になってしまうのも頷けるが。。。

95 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 00:30:25 ID:z/fSw5qr]
>>93
ありがとうございますm(_ _)m

96 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 00:35:02 ID:5wOgLhAV]
>ここにいるとfor病になってしまう
あー、あるある

97 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 00:36:16 ID:z/fSw5qr]
>>94
そうなんですか。。ありがとうございます。
何かとFOR使ってしまうところがあって。。

98 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 00:47:57 ID:nAmeHJsa]
まあ、forの方の対処も覚えといて損はないよ。
"delims="
findstrの方は、/cかな

99 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 00:51:20 ID:z/fSw5qr]
みなさん丁寧かつ迅速なレス、本当にありがとうございます。

>>98
delimsで指定無しにすれば
デフォのスペースやタブを無効化できるということでしょうか?

100 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 00:52:47 ID:9lvFrJAs]
しかしこんな処理でforぶん回すのは実用的には愚の骨頂といっておこう。



101 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 00:55:13 ID:z/fSw5qr]
>>100
言ってませんでしたが
A.txtには、一応複数行あるんです><
各行の文字列を使用するんです。

102 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 01:00:32 ID:9lvFrJAs]
つ findstr /?

つーかfindstr /l /g:A.txt B.txt

103 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 01:05:55 ID:z/fSw5qr]
>>102
ありがとうございます。
できた・・・。

104 名前:名無し~3.EXE mailto:sage [2007/05/23(水) 06:39:32 ID:Z0KdSFHv]
普通に考えて find や findstr みたいなテキスト検索系が
複数行に対応していないわけがないと思わんのか。


105 名前:名無し~3.EXE mailto:sage [2007/05/24(木) 21:11:54 ID:KEd+r5mO]
はあ?

106 名前:名無し~3.EXE mailto:sage [2007/05/24(木) 23:03:32 ID:zlbejraP]
>>105
「はあ?」とは思わんよ。
解決した後に何の実にもならない文句だけ言う奴って...とは思ったけどね。

107 名前:名無し~3.EXE mailto:sage [2007/05/25(金) 22:32:49 ID:fAyZ4XY3]
findは複数文字列サポートしてないだろ

108 名前:名無し~3.EXE mailto:sage [2007/05/26(土) 00:08:02 ID:nd32zRgJ]
はあ?

109 名前:名無し~3.EXE mailto:sage [2007/05/26(土) 00:13:45 ID:g8UzYY61]
はぁ。

110 名前:名無し~3.EXE mailto:sage [2007/05/26(土) 00:19:03 ID:YMAjJ4KA]
はっぁー



111 名前:名無し~3.EXE mailto:sage [2007/06/11(月) 07:47:49 ID:ieH1oTGK]


112 名前:名無し~3.EXE mailto:sage [2007/06/12(火) 18:04:25 ID:Ldj+OzYg]
どっひゃー

113 名前:名無し~3.EXE [2007/06/15(金) 00:15:35 ID:vhmYsLiT]
質問です。

\hoge\ab\cd\e.txt
\hoge\fg\hi\j.csv
\hoge\kl\mn\o.exe
と結構多目にディレクトリが複数あるときに
ファイルを1つ上位に移動して、最下層のディレクトリを削除する
バッチファイルって作成可能でしょうか?
(e.txtを\hoge\ab直下に移動して、
 cdディレクトリを削除するような処理です。)
ren \hoge\*\*\*.* \hoge\*\
rmdir \hoge\*\*
が出来ない様なので困ってます。

114 名前:名無し~3.EXE mailto:sage [2007/06/15(金) 00:47:46 ID:Ac8c+en4]
おまいらの大好物キタ━(゚∀゚)━ !!

115 名前:名無し~3.EXE mailto:sage [2007/06/15(金) 02:37:09 ID:yrhxNujk]
>>113
具体的な書き方は私にも分かりませんが

\hoge\ab\cd\e.txt ファイルのフルパスを取得
cd フルパス (これで \hoge\ab\cd\がカレントディレクトリになる)
move *.* ..\ (1個上に移動させる)
cd (とりあえずホームディレクトリにでも移動する。だってそこに居たままじゃディレクトリ削除できないもん)
rmdir /s /q フルパス (これで最下層のディレクトリが削除できたはず)

フルパスの取得は batファイルの引数に直接 e.txt等のファイルを一々指定してあげる事が出来るなら
%~dp0 で取得できるけど、多分引数で一々指定するのはダメなんだろうなぁ・・・。
ダメなら bat実行したディレクトリから下のディレクトリに向かって
1.もしディレクトリが存在するならその中に入る
2.入った先にもディレクトリが存在するならさらにその下に入る
のように再帰処理で行くしかないんじゃないかなぁ。。。大変そう。

と、ココまで書いて具体的なbatファイルを動作確認せずにココにダイレクトに書いてみる事にするw
再帰処理は無理なんで、引数で指定するタイプでいきまっ

使い方は
バッチファイル名.bat C:\hoge\ab\cd\e.txt
のように引数としてファイル名を与えてやって下さい。
そしたら
C:\hoge\ab\ に e.txtを含む全てのcd\の中のファイルを1個上のab\直下に移動し、
C:\hoge\ab\cd\ のcd\の中身が空になってれば削除します。

いや、動作確認して無いから動作するかどうか分からないけどね・・・。
次のレスで貼り付けます。

116 名前:名無し~3.EXE mailto:sage [2007/06/15(金) 02:37:47 ID:7qxhReqn]
こんな感じかな。XPで。あんまりディレクトリが一杯あるとどうなるのか判らない。
メッセージは表示しないようになってるが、移動と削除のecho表示するように
変更した方がよいかも。

@echo off
setlocal EnableDelayedExpansion
if "%~1" equ "" (call :sub .) else call :sub "%~1"
goto :eof

:sub %1
pushd %1
set x=0
for /f "tokens=*" %%I in ('dir /ad /b /on .') do (
call :sub "%%I"
set x=1
if !y! equ 0 move /y "%%I\*.*" . >>nul & rd "%%I"
)
popd
endlocal & set y=%x%
goto :eof

117 名前:名無し~3.EXE mailto:sage [2007/06/15(金) 02:38:42 ID:yrhxNujk]
@echo off
REM このプログラムは引数を1個指定する必要がある為チェック
if %1=="" (
echo 引数がありません。引数を1つ指定してください。
pause
goto EOF
)
cd %~dp1

REM このmoveの書き方自信無い
move /Y *.* ..\

REM この判定の仕方自信無い
if exist %~dp1* (
echo なぜかファイルが残っているのでディレクトリを削除できません。
goto EOF
) else (
cd
rmdir /S /Q %~dp1
)
REM 自信が無いと書いたところでバグが発生しそう。
pause

118 名前:名無し~3.EXE mailto:sage [2007/06/15(金) 05:46:07 ID:PyeIb4Mu]
for /f "delims=" %%i in ('dir /b/s/ad') do move %%i\* %%i\..
for /f "delims=" %%i in ('dir /b/s/ad') do rd %%i

ファイルがねぇぞ( ゚Д゚)ゴルァ!! とか、 ディレクトリが空じゃねぇぞ( ゚Д゚)ゴルァ!!とか
どばーっとエラーでるけど、目的は達せられる。

119 名前:名無し~3.EXE mailto:sage [2007/06/15(金) 18:45:34 ID:7cDfHIWt]
>>118
途中の階層のディレクトリの中にファイルが存在してたらそのファイルまで移動されちゃうぞ

120 名前:名無し~3.EXE mailto:sage [2007/06/16(土) 00:12:08 ID:0FhZKQDj]
忘れ物だよ

つ 要件定義フェーズ



121 名前:名無し~3.EXE mailto:sage [2007/06/16(土) 05:37:33 ID:7bk03Znc]
>>119
それでいいんじゃないの?
>>113にはどこにも最下層のファイルだけ移動とは書いていないけど…

122 名前:名無し~3.EXE mailto:sage [2007/06/16(土) 08:48:31 ID:zaoBWCRQ]
要するに>>113は救いようもない程におバカだったってことだね

123 名前:名無し~3.EXE mailto:sage [2007/06/16(土) 14:38:01 ID:7bk03Znc]
ディレクトリが空だって判定するスマートな方法ってどうやるの?

泥臭い・強引な方法ばかり思いつくんだが…

124 名前:名無し~3.EXE mailto:sage [2007/06/16(土) 19:02:59 ID:CXEmvWRn]
DIR /B "C:\hoge" | FIND /V "" > NUL で ERRORLEVEL=1 なら空。
ってのは強引?


125 名前:名無し~3.EXE mailto:sage [2007/06/18(月) 01:45:27 ID:H6wUdAfo]
読みやすさ優先ならfor /r と set /a ってなところだろうけどねぇ

126 名前:名無し~3.EXE mailto:sage [2007/06/18(月) 02:40:53 ID:YraK8n5o]
for /rって何だっけ?って思わずヘルプ(for /?)見ちゃったよ

127 名前:名無し~3.EXE mailto:sage [2007/06/21(木) 04:59:20 ID:s2INtICy]
cmd.exeって激しく使いにくいんだけど替わりになるフリーソフトって何かない?

128 名前:名無し~3.EXE mailto:sage [2007/06/21(木) 08:18:21 ID:EssH3dBi]
つ【ActivePerl】

129 名前:名無しさん@Vim%Chalice mailto:sage [2007/06/21(木) 16:00:44 ID:jQc8O4Oq]
 つeshell
 cygwin+screen+ck代わりぐらいにと 
 stand aloneで自己完結。Cygwin無くても機能。日本語可。
 xtermぐらいの表現力。screen程度には使える。ansi-colo
 r理解。

 bash,zsh,csh,tcsh,elisp...色々な要素ぱくっている。
 lispは意味不明。超人lisperになるべし。
 ソース書換て自分仕様にフルカズタマイズして

 NTemacs,Meadow上で暮らそうとか思ったんだけ。
 挫折気味...

130 名前:名無しさん@Vim%Chalice mailto:sage [2007/06/21(木) 17:53:11 ID:jQc8O4Oq]
 すまん大嘘こいてた。
 ansi-termはde ansi-termとかゆうマクロでフックしてたら
 しい。.emacsに埋め込んでた...
 
 ansi-termはcygwinが必要。
 んで素のesheelは違うバッファで起動したら同じプロ
 セス呼んでる('A`
 きっとどこかには誰か書いてるだろう便利lisp
 があれば割と逝けると思うんだけど。

 どこかないかな...
 deは独だったか。きっとどこかにあると思う。



131 名前:名無し~3.EXE mailto:sage [2007/06/21(木) 22:57:58 ID:jQc8O4Oq]
標準でeshell -tすると意図どうりだったorz...
これを好きなキーに振れば大体同じ感じで使えるかな...



132 名前:名無し~3.EXE mailto:sage [2007/06/22(金) 00:04:41 ID:ZAVgS6CQ]
どうせ単なるコマンドシェルだし、TABでの補完さえ出来ればそんなに気にならんけどなぁ

133 名前:名無し~3.EXE mailto:sage [2007/06/23(土) 03:10:03 ID:9gQ/tesN]
>TABでの補完
してる場合って、実際をTABしたい場合はどうしてるんですか?

かくいう漏れはCompletionCharにCtrl+FをアサインしてるCMD使い。

134 名前:名無し~3.EXE mailto:sage [2007/06/23(土) 04:03:01 ID:NIt2miq6]
>>133
TABはどんなとき入力してます?
俺はここ数年TABの入力の必要性を感じたことがないけど

135 名前:名無し~3.EXE mailto:sage [2007/06/23(土) 07:36:40 ID:LpBOoalT]
あるとしたら正規表現中に\t入れるぐらいだわな

136 名前:名無し~3.EXE mailto:sage [2007/06/23(土) 14:38:32 ID:V6yGWUpq]
実Tabって使ったことないな。

137 名前:名無し~3.EXE mailto:sage [2007/06/23(土) 15:02:52 ID:ckZdOOmB]
Tabはタブーだからね

138 名前:名無し~3.EXE mailto:sage [2007/06/23(土) 19:16:48 ID:LpBOoalT]
darega umaikoto ieto

139 名前:名無し~3.EXE mailto:sage [2007/06/25(月) 00:47:46 ID:hpiSpCO4]
Tabが欲しいときはテキストエディタでBATファイルを作成するね
大体そういうものが必要な場合は複雑な場合が多いし、
何度もやり直す必要も出てくるので、コマンドライン直打ちじゃやってられん

140 名前:名無し~3.EXE [2007/06/26(火) 16:01:39 ID:k8sDAltM]
for /l %%A in(0, 1, 31) do echo %%A
で10未満の表示を00と二桁にしたいのですが、どうやったら良いのですか?



141 名前:名無し~3.EXE mailto:sage [2007/06/26(火) 17:40:50 ID:ZLWahYoK]
setlocal EnableDelayedExpansion
for /l %%A in (0, 1, 31) do set a=0%%A& echo !a:~-2!

142 名前:名無し~3.EXE mailto:sage [2007/06/26(火) 19:01:40 ID:Bg2uMH0m]
tabはシステム環境変数に入れとくよ

143 名前:名無し~3.EXE mailto:sage [2007/06/26(火) 19:10:36 ID:Cd9m53It]
>>142
それだと使いづらいよ
for /f やfindstrなんかで使うのに遅延環境変数を使わないけなくなる

144 名前:名無し~3.EXE mailto:sage [2007/06/26(火) 19:40:42 ID:WXGDVtW4]
TABを使いたい時だけcmd /f:offを実行して使い終わったらexit

つかTABが必要なら別キーにアサインするのがオススメ

145 名前:名無し~3.EXE mailto:sage [2007/06/26(火) 20:59:48 ID:uoA+Xcia]
その別のキーの文字を入力したくなったらどうするのさ?

146 名前:名無し~3.EXE mailto:sage [2007/06/27(水) 04:41:42 ID:TZPENXns]
>>144
別のキーにアサインってどうやるの
まさかわざわざそのために常駐ソフトなんか入れないよね?

147 名前:名無し~3.EXE mailto:sage [2007/06/27(水) 05:07:31 ID:Oz3Y82L1]
>>140ではありませんが>>141でやりたいことはできたのですが
以下の構文ではうまくいかなかった理由を教えてください

やりたかったこと:10未満を00と二桁にするしてリネームする
結果:hoge_01はできるが、hoge_02〜09(になってほしいファイル)がhoge_2〜9にリネームされる

rem ここから
setlocal enabledelayedexpansion
set count=0
for /f "usebackq delims=" %%A in (`dir "%~dp1" /a-d /b`) do (
set /a count+=1
if [!count!] lss [10] (set track=0!count!) else set track=!count!
ren "%~dp1%%A" "hoge_!track!%~x1"
)
endlocal
rem ここまで

やりたかったこと:9以下を00と二桁にするしてリネームする
結果:hoge_01〜09はできるが、hoge_10(になってほしいファイル)以降も010などにリネームされる

rem ここから
setlocal enabledelayedexpansion
set count=0
for /f "usebackq delims=" %%A in (`dir "%~dp1" /a-d /b`) do (
set /a count+=1
if [!count!] leq [9] (set track=0!count!) else set track=!count!
ren "%~dp1%%A" "hoge_!track!%~x1"
)
endlocal
rem ここまで

148 名前:名無し~3.EXE mailto:sage [2007/06/27(水) 06:06:13 ID:TZPENXns]
>>147
[数字]だと文字列の比較になるので。
[]を取っ払えば数字としての比較になる。

149 名前:名無し~3.EXE mailto:sage [2007/06/27(水) 06:22:22 ID:Oz3Y82L1]
>>148
そうだったんですか!
if構文のときはいつもこの書き方でったので
これが問題だとはまったく思い至りませんでした
ありがとうございました!

150 名前:名無し~3.EXE mailto:sage [2007/06/27(水) 06:47:21 ID:TZPENXns]
ついでに、同じディレクトリでのリネームは危険。
リネーム後のファイルがあらためて検索対象になることがある。
どういう場合にそうなるのかは宿題。



151 名前:名無し~3.EXE mailto:sage [2007/06/27(水) 09:27:05 ID:VWf9EHKN]
曲芸みたいなことまでして0パディングするぐらいなら、
素直にWSHで作って欲しいわ
見づらくて仕方がない

152 名前:名無し~3.EXE mailto:sage [2007/06/27(水) 17:47:58 ID:2QApMI8R]
>>143
遅延展開は関係ないだろ

153 名前:名無し~3.EXE mailto:sage [2007/06/27(水) 22:11:08 ID:lvppcSdl]
はあ?

154 名前:名無し~3.EXE mailto:sage [2007/06/27(水) 23:28:41 ID:nP2x7iOe]
失礼します。
教えてほしいことがあるのですが、runas /user:owner /savecred cmd 
と実行すると、以降PCを再起動しても資格情報をがっちり掴んで廃棄してくれません。
/savecredオプションで保存された資格情報を削除するには、どのようにすればいいでしょうか?

windows xp pro sp2
cmd.exeのdos窓から実行しました。

155 名前:名無し~3.EXE mailto:sage [2007/06/27(水) 23:53:30 ID:VWf9EHKN]
別の資格情報で上書きとか繰り返してレジストリ監視してりゃ、どこがキーなのかわかるんでないの?


156 名前:名無し~3.EXE mailto:sage [2007/06/28(木) 00:11:38 ID:njxOVg+i]
>>155
ありがとうございます。レジストリを直接編集するということですね。
コマンド自体便利だと思ったので、できればコマンドから実行できればよかったのですが。
パスワード変更をかねてキーをさがしてみます。ありがとうございました。

157 名前:名無し~3.EXE mailto:sage [2007/06/28(木) 00:14:31 ID:baNJcXIn]
>>156
いや、キーさえ分かればreg.exeでどうにでもなるんでないの?
と言いたかったんだ

158 名前:名無し~3.EXE mailto:sage [2007/06/28(木) 00:51:02 ID:njxOVg+i]
>>157
こんなコマンドあったんですね。あとはキーがわかればコマンドから操作できそうです。
わざわざご指摘ありがとうございました。


159 名前:113 mailto:sage [2007/06/28(木) 23:03:15 ID:bHfzd9Lz]
色々教えていただいてありがとうございます。

\hoge\
のディレクトリでcd,hi,mn等のディレクトリのファイルだけ移動して削除したかったのです。
説明不足ですいません。
一応こんな感じで動きました。
でも、フォルダ名とか長いと駄目な場合もあるようですね。
dir /xもつけた方がいいんでしょうか?



for /f "delims=" %%i in ('dir /b/ad') do (
for /f "delims=" %%j in ('dir /b/ad "%%i"') do move "%%i\%%j\*" "%%i\%%j\.."
for /f "delims=" %%j in ('dir /b/ad "%%i"') do rd "%%i\%%j"
)


160 名前:113 mailto:sage [2007/06/28(木) 23:11:14 ID:bHfzd9Lz]
むむ
/b/xは一緒に出来ないようですね



161 名前:113 mailto:sage [2007/06/28(木) 23:56:29 ID:bHfzd9Lz]
一応これで何とかなりそうです。
ありがとうございました

for /f "delims=" %%I in ('dir /b/ad/on') do (
cd "%%I"
for /f "delims=" %%J in ('dir /b/ad ') do move "%%J\*" "%%J\.."
for /f "delims=" %%J in ('dir /b/ad ') do rd "%%J"
cd ..
)


162 名前:名無し~3.EXE [2007/07/04(水) 01:42:29 ID:abxJ+p1r]
環境変数に現在のディレクトリを設定するにはどうすればよいのでしょう?
set hoge=%0 としてもうまくいかないorz

163 名前:名無し~3.EXE mailto:sage [2007/07/04(水) 02:04:17 ID:XwTWde1q]
pushd

164 名前:名無し~3.EXE [2007/07/04(水) 02:06:31 ID:abxJ+p1r]
>>163
すみません、よければもう少しヒントを頂けないでしょうか?

165 名前:名無し~3.EXE mailto:sage [2007/07/04(水) 02:27:36 ID:9UcVbA4Z]
現在のディレクトリってのがカレントディレクトリを指してるのなら
(通常はそういう意味のはずなんだけどね)
%cd%

実行しているBATファイルのパスを指してるのなら
%~dp0

166 名前:名無し~3.EXE [2007/07/04(水) 02:35:21 ID:abxJ+p1r]
>>165
ありがとうございます。
%~dp0でいけました。
ほんと、私の質問がわかりにくくてすみません・・・。

ちなみに、こういう定数の一覧ってどこかにまとめてあるのでしょうか?
手元のプロンプト辞典にはこういうの載ってなくて・・・。

167 名前:名無し~3.EXE mailto:sage [2007/07/04(水) 02:46:16 ID:Zwtmh2SZ]
set /?
call /?
そして毎度おなじみ for /?

168 名前:名無し~3.EXE mailto:sage [2007/07/04(水) 02:51:55 ID:abxJ+p1r]
>>167
おぉ!すばらしい!!
感動しました。
そしていろいろあって奥が深いのですね。
ありがとうございました。

169 名前:名無し~3.EXE mailto:sage [2007/07/04(水) 05:06:14 ID:mIR/jNv3]
定数?

170 名前:名無し~3.EXE mailto:sage [2007/07/05(木) 02:28:26 ID:hAzDK9l7]
あんなもので感動できる幸せな人生(はあと



171 名前:名無し~3.EXE mailto:sage [2007/07/05(木) 20:24:40 ID:mJP5Jzub]
捻くれた物の見方をしてれば大人になった気分♥

172 名前:名無し~3.EXE mailto:sage [2007/07/06(金) 08:17:18 ID:gFjF/2om]
C:\System Volume Information\
の中の_restor<GUID>なんちゃら・・って言う名前のフォルダの中に降りて
その中からsnapshotフォルダに降りて RP1 〜 RP*(いくつか)まである中から
最新の更新日のフォルダに降りて、その中から_REGISTER_MACHINE_SYSTEM
っていうファイルをC:\WINDOWS\system32\config\ の中に SYSTEM と言う名前
でコピーするっていう処理をbatで実行したいのですが(もちろん普通にWindows上から
実行するとメモリが掴んでいるので不可能ですが、1CD起動のXPから実行します)

C:\System Volume Information\までは固定なので簡単に移動できるのですが
マシンによって_restor<GUID>の値が可変なのでパスを直うち出来ません。
<GUID>を取得する方法もよく分からないので
dir /A コマンドの出力結果を見て、そのフォルダに移動すると言うような処理は
出来ませんか?
その後 snapshot\配下の複数のフォルダに対して最新のフォルダがどれかを
求める処理は
SAISIN=最初のフォルダ
ループ(全部のフォルダを参照するまで) {

173 名前:名無し~3.EXE mailto:sage [2007/07/06(金) 08:19:32 ID:gFjF/2om]
途中で書き込んでしまいました。続きです。

SAISIN=最初のフォルダ
ループ(全部のフォルダを参照するまで) {
    if(%SAISIN%の更新日 < 次のフォルダの更新日) {
SAISIN=次のフォルダ名
    }
}ループ終了

こんな感じのアルゴリズムで求めて、その最新のフォルダに降りて_REGISTER_MACHINE_SYSTEM
ファイルを取ってくる処理を実行したいのですが・・・

一応自分で調べた限り フォルダの更新日は %~z1 みたいな変数で参照できるみたいです。
実現するのはBatだと厳しいですかね?

174 名前:名無し~3.EXE mailto:sage [2007/07/06(金) 09:46:59 ID:Q7SsQ7nu]
@echo off
set target_drive=%systemdrive%
set latest=
pushd %target_drive%\System Volume Information
for /f "delims=" %%I in ('dir /b/ad/od _restore*') do (
pushd %%~fI
for /f %%J in ('dir /b/ad/od rp*') do set latest=%%~fJ
rem for /f %%J in ('dir /b/ad/o-d rp*') do set oldest=%%~fJ
popd
)
popd
if "%latest%" neq "" (echo %latest%) else echo *** not found ***

175 名前:名無し~3.EXE mailto:sage [2007/07/06(金) 18:46:41 ID:aZ88EIgF]
cd /d "C:\System Volume Infomation\_restor*\snapshot"
for /f %a in ('dir /ad /b /od rp*') do set SAISIN=%a
cd "%SAISIN%"
copy _REGISTER_MACHINE_SYSTEM C:\WINDOWS\system32\config\SYSTEM


176 名前:173 mailto:sage [2007/07/06(金) 19:34:36 ID:gFjF/2om]
>>174
おおお、レスありがとうございます。
貴方のおかげで目的が実現できました。感謝します。
Batファイルを編集していて気づいたのですが、貴方のアルゴリズムだと
C:\System Volume Information\_restore* 
ってフォルダが複数あった場合に(今回は1個なので対した処理量の違いは無い)
最後以外のフォルダの中の最新のフォルダまで探索しにいくと思うので
無駄な処理が入っていますよね。forの二重ループでやっているからだと思うんですが
1回forでループして、ループ抜けた後でもう一回forのループで_restore*\snapshot\以下の
RPの最新を探す方が効率がいいですよねぇ?

>>175
うわ、みじかっ
っていうか cdコマンドで _restore* で入れるんですかっ!
もし_restore*で複数のフォルダが該当した場合はどうなるのだろうかと
RPがたくさんあるフォルダ内で実行したところ、どうやら最初に見つかったフォルダに
入るみたいですね。かなり簡潔ですねぇ・・・。

で、ネットで調べてもどうしても分からなかったのでお聞きしたいのですが
(for /f)の /f ってどういうオプションなのでしょうか? for /? して見てもよく分からず。
for /L だと for /L %%I in (初期値,増分,条件) と書ける事は知っているのですが・・・。
# C言語やJava言語のforとは位置が違いますよね。混乱します・・・。

177 名前:名無し~3.EXE mailto:sage [2007/07/06(金) 21:47:55 ID:gFjF/2om]
www.geocities.jp/hokaan/compdel.txt

↑上記batファイルを実行すると
(の使い方が誤っています

と怒られます。どこがおかしいのでしょうか?文法レベルで構いませんので
Debugをお願いできないでしょうか? ( ) の数を数えたりしたのですが
数に間違いは無いのですが・・・・

178 名前:名無し~3.EXE mailto:sage [2007/07/06(金) 22:02:52 ID:Q7SsQ7nu]
@echo offを外せばデバッグできるはず
%1が未定義だと、
if == "" (
と展開される。

if "%~1" == ""

179 名前:名無し~3.EXE mailto:sage [2007/07/06(金) 23:51:11 ID:gFjF/2om]
>>178
if "%1" == ""  でも動作するのですが

"%と1"の間に ~を挟むと何が違うのでしょうか?

180 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 00:10:13 ID:OhijueHL]
%1にもし"c:\Program Files"とかが入っていたらこのif文はエラーになる。
if ""c:\Program Files"" == ""



181 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 00:19:10 ID:OhijueHL]

念のため、これは>>179のように書くとこういう弊害があるということで、
>>178はそういう場合の対処も兼ねている。

182 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 12:01:13 ID:PdZu9Idw]
簡単に言うと、~は%1が""で括られていなければそのまま、括られていれば""を外す。
call /? 読むなり echo %~1 試すなりすれば分かることだと思うが。


183 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 13:54:44 ID:2fDZSvpN]
%1→"%1"
%2→"%2"
%~f1→"%~f1"
%~f2→"%~f2"
%~z1→"%~z1"
%~z2→"%~z2"
最終行に「:EOF」を追加

これでどうだ?

184 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 13:56:22 ID:2fDZSvpN]
うへ、ミスった

× %1→"%1"
○ %1→"%~1"

× %2→"%2"
○ %2→"%~2"


185 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 16:03:50 ID:OhijueHL]
goto :eofはラベルを作成しなくても飛べる便利機能。
goto /?でも読めば書いてある。

186 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 16:21:20 ID:d6rD1byQ]
なるほど・・・分かりました!
"%~1" って 書かないと ""変数の中身"" ってダブルクォーテーションが普通の2倍
くっついてしまって構文的におかしいわけですか・・・だから余分なダブルクォーテーションを
削除しているわけですね。なるほどです。非常に勉強になります。


すみません、質問ばかりで申し訳ないのですが
リモートのFTPサーバが生きているかどうかで処理を分けるようなことは出来ませんか?

pingを実行して、帰ってきた %errorlevel%を見て処理を分けるというのは出来るんですが
これだと pingはルータで蹴る設定だけど、FTPサーバは繋がると言う状況の時や
pingは通るけどFTPサーバが落ちているとか言う時に困るんです。

@echo off
ftp -s:ftpcmd.txt (ftpcmd.txtファイルにFTPログイン〜何もせず切断〜終了まで書いとく)
if %errorlevel% (
で処理分けをしようとしてみたのですが、FTP接続に成功しようが失敗しようが
0(真)が帰ってくる(そりゃftp接続は失敗したけどftpコマンドそのものは成功しているんだから
0が帰ってくるわな・・・) ので、判定の材料にはならないんですよ。

皆さんならどうやって判定しますか?

187 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 16:52:20 ID:57vtk9UF]
>>186
泥臭いけど、結果をファイルにリダイレクトしといて、そのファイルにfindstrするとか。

188 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 17:20:21 ID:OhijueHL]
ftp -n -s:ftp_open_check.txt | find "220" >nul
rem ftp -n -s:ftp_open_check.txt | find "Connected to" >nul
if %errorlevel% equ 0 echo ** open success **

189 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 17:36:10 ID:OhijueHL]
修正
ftp -n -s:ftp_open_check.txt 2&>1 | find "220" >nul

190 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 17:46:31 ID:d6rD1byQ]
なんというか・・・素晴らしいというか凄いというか、いやはや・・・。

>>187
そのせんでfindstrでやっても出来そうでした。

>>188-189
"2&>1" ←これの意味を教えて頂けませんか?
修正前のでも動作しましたので・・・。
しかしftp -nなんてあったんですね。 ftp /? してもヘルプ出ないので
ftp -s しか知りませんでした。
で、その出力結果をfindにパイプで渡すからファイルも出来ないと。
素晴らしすぎる



191 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 17:53:18 ID:OhijueHL]
さらに2>&1の間違いで、標準エラー出力を標準出力にリダイレクトする
(要するに、両方の出力をマージしていっしょくたに標準出力に吐き出す)

ftp -?

-nは自動ログインをしない。ユーザー名とパスワードの入力不要。
open ftp-addres
close
bye
でOK

192 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 18:45:05 ID:d6rD1byQ]
>>191
2>&1 って書けば 2(標準エラー) 1(標準出力)を結合して吐き出すわけですね。
で、吐き出したデータは使うんですか?どうせfindはそんなの見てないようだし
findの出力はnulの彼方にだし。

ftp -? で見て見ました。色々あるんですねぇ。全然知りませんでした。
でもとりあえず、 FTPサーバ生存確認と言いましたが、細かく言うと
FTPサーバが生存していて、かつログインに成功した時ファイルをアップロード
見たいな事をやりたいんで、ログイン処理まで書いて logged in, といった
文字列をfindにかませて判定した方がより正確な判定が出来るので
ログインまでやりますw。

皆さんはこういう情報はどうやって勉強しているのですか?
私は
www.ne.jp/asahi/hishidama/home/tech/windows/bat.html
ココで多くを学びました。
ネットで調べてもあまりBatって細かく解説しているサイトが無くて
やはり本格的にやる為には書籍が必要なんですかね。

193 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 19:06:28 ID:OhijueHL]
ヘルプだけで結構わかるもんだよ。
set /?
if /?
for /?
call /?
goto /?
cmd /?
setlocal /?
echo /?

194 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 19:28:57 ID:d6rD1byQ]
>>193
ヘルプだけで分かるって・・・・
すごいなぁ・・・・ハッカーですかw。
本当にどうもありがとうございました。これで今回の目的は全部達成できました・・・。

195 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 20:06:47 ID:OhijueHL]
コマンドシェルの概要だとかリダイレクタとかは、Windows Helpを見ないと分からないようだ。
コマンドヘルプ(/?)と両方のヘルプを見比べればいいと思う。

(XPの場合)
startボタン
 − ヘルプとサポート
   − ツール を使ってコンピュータ情報を表示し問題を診断する
    − コマンド シェルの概要

コマンドシェルからヘルプを起動したい場合
hh MS-ITS:G:\WINDOWS\Help\ntcmds.chm::/ntcmds_o.htm
hh MS-ITS:G:\WINDOWS\Help\ntcmds.chm::/redirection.htm
など。
またはヘルプサポートセンターで見たい場合
start helpctr /url ms-its:ntcmds.chm::/ntcmds_shelloverview.htm
など。

196 名前:名無し~3.EXE mailto:sage [2007/07/07(土) 20:39:29 ID:d6rD1byQ]
>>195
うわー残念。Windowsを徹底的にチューニングして無駄な物、要らない物を削除
しまくっているのでヘルプファイルとか全部既に消してあるから開けない・・・・。

197 名前:ID:2fDZSvpN mailto:sage 亀レス [2007/07/08(日) 02:15:06 ID:3Owpm7dd]
>>185
判ってはいるが、それが無いと何となく気持ち悪いので俺はいつも付けてる。

198 名前:名無し~3.EXE mailto:sage [2007/07/08(日) 09:16:58 ID:OzdlBfMw]
>>196
あほですか?

質問スレよく見るんでお前さんのような奴時々見かけるけど、
わけもわからず適当にファイル削除する奴を見ると毎度ながら反吐が出そうになる。

199 名前:名無し~3.EXE mailto:sage [2007/07/08(日) 09:25:12 ID:b18X3IE2]
PCと関係ないスレで「自分でぐぐって調べろ」と言われて
「PCの調子が悪くて・・・」と取り繕ってるのと同じ(要はウソ)

200 名前:名無し~3.EXE mailto:sage [2007/07/08(日) 10:30:17 ID:/ja/+eZN]
>>197
goto :eof と
goto eof の違いは判ってんのか?



201 名前:名無し~3.EXE mailto:sage [2007/07/08(日) 13:08:03 ID:XC4SQeZi]
>>198
DiskX Toolsっていうクリーニングソフトがあって、その中の削除項目に
Windowsのヘルプファイルってあるんですよ。
8年間パソコンを使い続けてきて、そんなヘルプファイルなんか見たこともないし
これから先も見る事は無かろう、役に立たないフリーセルやソリティア、マインスイーパ
等のデータと同価値のファイルだろうと思って消してしまってます。
あほですみません。

>>199
なるほど、、、確かにそういう風にも取られるんですね。コレは失礼しました。

>>200
その二つに違いなんかあるのか・・・・・ と言うか goto : ってコロンつけないと移動できないんじゃ・・

202 名前:名無し~3.EXE mailto:sage [2007/07/08(日) 13:11:07 ID:tecQhfCB]
exit /b 使ってる。必要なら終了コード付けられるし。

203 名前:名無し~3.EXE mailto:sage [2007/07/08(日) 16:51:02 ID:NCTpwRJm]
これだからヘルプを読まない人種は

204 名前:名無し~3.EXE mailto:sage [2007/07/08(日) 18:05:49 ID:IRXda/xa]
ヘルプなんか読む奴は初心者

205 名前:名無し~3.EXE mailto:sage [2007/07/08(日) 18:39:27 ID:8kvqjQRq]
ヘルプを読まない奴は中二病

206 名前:名無し~3.EXE mailto:sage [2007/07/08(日) 22:27:24 ID:yX0XbVid]
ヘルプを歌うのはジョンレノン

207 名前:名無し~3.EXE mailto:sage [2007/07/08(日) 23:27:27 ID:27PU9C5t]
ヘルプにはパラメー、ラメー(自粛

208 名前:名無し~3.EXE mailto:sage [2007/07/09(月) 02:46:08 ID:v3Zn7L3A]
echo ヘルプネタはもういいよ。
pause > nul
goto :eof


209 名前:名無し~3.EXE [2007/07/09(月) 17:53:53 ID:avOS7hXh]
コマンドラインでネットワークの有効/無効を行いたいのですがどのようにすれば良いのでしょうか。
GUIだと「スタート→設定→ネットワークと(ry→ローカルエリア接続」の作業です。
無線LANがスタンバイする際に問題起こすのでスタンバイ入る前にネットワークから切断し
復帰後また接続すると言うようにしたいのです。
スタンバイ入ったり復帰するイベントはツールで取得できるのでその際に実行させれば行けるかなと。

210 名前:名無し~3.EXE mailto:sage [2007/07/09(月) 18:13:31 ID:+C6r4Cf5]
>>209
ipconfig /?



211 名前:名無し~3.EXE [2007/07/09(月) 18:37:10 ID:avOS7hXh]
ipconfigでは出来ないと思いますが…

212 名前:名無し~3.EXE mailto:sage [2007/07/09(月) 18:52:30 ID:+C6r4Cf5]
IPを/releaseすればいけるかなと予想したんだが、、、

213 名前:名無し~3.EXE mailto:sage [2007/07/09(月) 20:53:01 ID:+JHLqH0V]
>>209
無理。windows Server 2003なら
netsh interface set interface "ローカル エリア接続" disabled

ただし、WSHでコントロールパネルの「ネットワーク接続」から「{ローカルエリア接続」
を「無効にする」を選択するようなスクリプトを組めば可能。

214 名前:名無し~3.EXE mailto:sage [2007/07/09(月) 21:11:48 ID:PbKOGN6x]
>>209
最新ドライバを確認するか、そのPCのスレで質問すれば
スタンバイの問題が解決するかも

215 名前:名無し~3.EXE mailto:sage [2007/07/09(月) 23:13:23 ID:s2knvD30]
>>213
WSHじゃなくて .batじゃ無理?

216 名前:名無し~3.EXE mailto:sage [2007/07/10(火) 00:31:52 ID:aY6Hj5YD]
>>215
exe自作してbatから呼べばいいんじゃね?

217 名前:名無し~3.EXE mailto:sage [2007/07/10(火) 07:42:18 ID:P6vaWxQy]
webサーフィンしてから拾ってきた。自己責任でどうぞ。
Const ssfCONTROLS = 3
Const sConPaneName = "ネットワーク接続"
Const sConnectionName = "ローカル エリア接続"
Const sDisableVerb = "無効にする(&B)"
Const sEnableVerb = "有効にする(&A)"
set shellApp = createobject("shell.application")
set oControlPanel = shellApp.Namespace(ssfCONTROLS)
set oNetConnections = nothing
for each folderitem in oControlPanel.items
if folderitem.name = sConPaneName then
set oNetConnections = folderitem.getfolder: exit for
end if
next
if oNetConnections is nothing then
wscript.quit
end if
set oLanConnection = nothing
for each folderitem in oNetConnections.items
if lcase(folderitem.name) = lcase(sConnectionName) then
set oLanConnection = folderitem: exit for
end if
next
if oLanConnection is nothing then
wscript.quit
end if
for each verb in oLanConnection.verbs
if verb.name = sDisableVerb then
verb.Doit
WScript.Sleep 2000
end if
next

218 名前:名無し~3.EXE mailto:sage [2007/07/10(火) 08:12:31 ID:bwIa74fK]
batプログラムだと ユーザに Yes か No か  名前、性別等の入力をさせて
その入力結果に応じて処理をするという事は出来ないんですかね?
こういう処理はWSHですか?。


それとコマンドラインインタフェースが無いアプリケーションをコマンドラインで
(batでもWSHでもいいので)GUI操作させる事は出来ませんか?

例:FileZillaと言うFTPクライアントを立ち上げ、立ち上がった後即座に
ミラーリングアップロードを開始させ、ミラーリングアップロードが終わったら
FileZillaを正常終了させる。

等。AutoHotKeyとかUWSCとかそれ関連のアプリはあるみたいなんですが
batかWSHで実行できないかなぁと思いまして。

219 名前:名無し~3.EXE mailto:sage [2007/07/10(火) 08:15:54 ID:0DJ2pCRZ]
set n=default
set /p n=input:
echo %n%


220 名前:名無し~3.EXE mailto:sage [2007/07/10(火) 08:40:06 ID:P6vaWxQy]
キー・ストロークの送信とプログラムのアクティベーション
www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html



221 名前:209 [2007/07/10(火) 18:57:52 ID:Pg7+75wk]
>>213-217
サンクスです。
>217を少し改造して
WScript.exe hoehoe.vbs on/off
とか何とかして実行するように登録しうまくいきました。

222 名前:名無し~3.EXE mailto:sage [2007/07/10(火) 21:17:43 ID:LwFxhRr6]
Linux 等のシェルで、長いコマンドを一行で入力するとき、'\' で改行できますよね。

$ java -Dfoo=bar \
-classpath lib\hoge.jar \
fuga

これと同じようなことを、Windows のコマンドプロンプトや bat ファイルで出来ますか?

コマンドプロンプトでは出来なくとも(できればうれしいけど) bat ファイルの中では実現したいです。


223 名前:名無し~3.EXE mailto:sage [2007/07/10(火) 21:37:04 ID:aY6Hj5YD]
できません

224 名前:名無し~3.EXE mailto:sage [2007/07/10(火) 22:07:11 ID:vI/PS3tz]
環境変数に分割していくしかないな

225 名前:名無し~3.EXE mailto:sage [2007/07/10(火) 22:26:19 ID:StBOT2v7]
@echo off
echo very ^
long ^
command


226 名前:名無し~3.EXE mailto:sage [2007/07/11(水) 12:05:59 ID:dS7I7lnI]
>>223-224
プギャー

まあ、俺も知らなかったんだけどな。

227 名前:名無し~3.EXE mailto:sage [2007/07/12(木) 22:25:22 ID:VVU4dqVo]
WSHについての質問です。

MsgBox ("サーバ接続に失敗しました",vbYesNoCancel)

と書いて実行すると
Sub プロシージャを呼び出すときに、かっこを使うことはできません。

と怒られます。 マニュアルを調べてみると
MsgBox(prompt[, buttons][, title][, helpfile, context])
とかかれてあります。
promptが"サーバ接続に失敗しました" で、 , buttonsが vbYesNoCancelで、残りは全て
省略可能で ) で閉じる。 構文間違ってないように思うのですがなぜエラーになるんでしょうか?

228 名前:名無し~3.EXE mailto:sage [2007/07/12(木) 22:29:37 ID:Wbmh/5un]
>>227
「Sub プロシージャを呼び出すときに、かっこを使うことはできません。」
でググレカス

229 名前:名無し~3.EXE mailto:sage [2007/07/17(火) 22:10:52 ID:2qlxd08l]
set /pだと誤入力の危険があるので、それを回避するために、
バッチファイルからHTAを起動してプルダウンメニューとボタンを表示し、
選択された項目に応じてバッチファイルの動作を変えられたらいいなぁと
考えましたが、これは実現可能でしょうか?
もし可能なら、サンプルを載せていただけると助かります。
また、不可能な場合、何か代替案があるといいのですが・・・。


230 名前:名無し~3.EXE mailto:sage [2007/07/17(火) 23:54:30 ID:95VZVBFb]
htaからbat実行すりゃいいんじゃないの



231 名前:名無し~3.EXE mailto:sage [2007/07/19(木) 21:27:44 ID:thElGmVj]
choice.exe

232 名前:名無し~3.EXE mailto:sage [2007/07/20(金) 23:18:59 ID:V2dWSSNT]
batからhta実行すりゃいいんじゃないの

233 名前:名無し~3.EXE mailto:sage [2007/07/22(日) 18:28:26 ID:6AwCUSGD]
質問です。SUBSTコマンドで割り当てた仮想ドライブに、
別のボリュームラベルを表示させることはできませんか?

C:SYSTEM
D:DATA

と2つのドライブがあるとします。

subst E: D:\1
subst F: D:\2
subst G: D:\3

とすると、マイコンピュータを開くと

C: SYSTEM
D: DATA
E: DATA
F: DATA
G: DATA

となってしまい、見にくくなってしまいます。対処法ありましたらお願いします。

234 名前:名無し~3.EXE [2007/07/22(日) 22:33:17 ID:1kQ2Scg2]
コマンドラインからPrintScreenを押す方法はありますでしょうか?
環境はWindows Server 2003です

VBScriptのSendKeysを検討しましたがMSDNに
>メモ アプリケーションに PrintScreen キー ("{PRTSC}") を送ることはできません。
と書かれており試してみましたが実際に無理でした

msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsMthSendKeys.asp

235 名前:名無し~3.EXE mailto:sage [2007/07/23(月) 19:13:56 ID:WByBtV4R]
>>234
PrintScreenを押して何をしたいのかにもよるけど
フリーソフトで適当なのを使えばいいんじゃね?
ttp://search.vector.co.jp/search?query=SendKey

236 名前:名無し~3.EXE mailto:sage [2007/07/23(月) 20:06:40 ID:DslKxDc9]
マルチ馬鹿にエサ与えんな
pc11.2ch.net/test/read.cgi/tech/1176698934/136-

237 名前:名無し~3.EXE [2007/07/23(月) 22:30:33 ID:ptbQjJRK]
Win98環境でバッチを作成してます。
日付をリダイレクトして、ファイルに書き込みたいのですが、
Win98の場合、dateを実行すると、新しい日付を指定してくださいと
表示され、バッチ内で実行すると、その部分で処理が止ってしまいます。
Windows98環境ではDateやTimeコマンドの結果を、どのようにして
ファイルにリダイレクトすれば良いのでしょうか。

238 名前:名無し~3.EXE mailto:sage [2007/07/23(月) 22:50:33 ID:2a12I535]
%date% %time%

239 名前:名無し~3.EXE mailto:sage [2007/07/23(月) 23:11:15 ID:LD4VpkP3]
>>237
BUでも使ったら?
hp.vector.co.jp/authors/VA000007/bu.htm

240 名前:名無し~3.EXE mailto:sage [2007/07/23(月) 23:14:26 ID:ptbQjJRK]
>>238
それは試したけど駄目だったです

>>239
外部アプリ使う以外では無理ッスかね



241 名前:名無し~3.EXE mailto:sage [2007/07/23(月) 23:45:46 ID:YzCqJVe0]
NT系なら /T オプションがあるけど98にはない。
俺も昔同じ事やろうとして結局Perl使ったもの。

242 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 00:28:47 ID:OiAr7ahv]
応答ファイル作ってみては?
エンターを標準入力する

date < enter.txt

243 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 00:54:25 ID:zyICGXlS]
わざわざファイルを作らなくても
echo.|date

244 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 01:13:51 ID:OiAr7ahv]
>>243
いやーそれも考えたけど
Win98じゃあecho.が別の結果になりそうな予感がしたので止めたわけよ

245 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 01:23:30 ID:zyICGXlS]
DOS5の頃から、echo. は改行。ピリオドの代わりに / : , なども可。

246 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 01:28:49 ID:OiAr7ahv]
まあどうやってもwin98じゃあfor /fもset等での編集もできないので
外部コマンド(BATUTYとか)を使うのが良い

247 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 01:37:25 ID:haePCbS9]
>>235
目的はスクリーンショット取得の効率化です
現在はプリントスクリーンを押下してペイントに貼り付け名前をつけて保存をしています

スクリプトを起動するだけで現在の画面をbmpファイルにしようと目論んでいます
ペイントの起動からファイルの保存(ファイル名は連番で空きのあるもの)までは実現しています
あとはクリップボードに画像を送る方法が足りません

社内PCにフリーソフトのインストールは禁止なのでWindows標準のソフトやスクリプトで実現したいです
よろしくお願いします


248 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 01:43:41 ID:OiAr7ahv]
ペイントなら、メニュー操作でできるじゃん。
編集(Alt+E)−すべて選択−コピー (送信するキーで言えば、Ctrl+A、Ctrl+C)
でどう?

249 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 01:45:14 ID:OiAr7ahv]
勘違い、忘れて

250 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 01:56:13 ID:FTD7xDte]
うぜぇなあ。
社内でのスクリプトも禁止にしてくれればいいのに。



251 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 07:28:39 ID:nHmUjfkY]
> 社内PCにフリーソフトのインストールは禁止
こういう会社は遠からず衰退するなw

252 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 09:38:47 ID:hrghhaU8]
逆にインストールし放題だったらそっちの方がよっぽど問題。

253 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 13:26:06 ID:ZRCldvmk]
アンインストール〜♪ アンインストール〜♪

254 名前:名無し~3.EXE [2007/07/24(火) 16:51:41 ID:1kH5Q7z7]
temp.txtというファイルから
東京都と埼玉県という文字列があるか無いかを、
kekka.txtに書いていくバッチを作りたいのですが、
以下のようにすると、東京都までの検索は出来ますが、
埼玉県の検索で、無限ループのような実行になってしまいます。
環境は、Windows98のMS-DOSプロンプトです。
回避策をご教授頂けないでしょうか。
よろしくお願いします。

find "東京都" < temp.txt
IF ERRORLEVEL 1 GOTO NG "temp.txt"
IF ERRORLEVEL 0 GOTO OK "temp.txt"
:NG
@echo 東京都 なし >> kekka.txt
GOTO END
:OK
@echo 東京都 あり >> kekka.txt
GOTO END
:END

find "埼玉県" < temp.txt
IF ERRORLEVEL 1 GOTO NG "temp.txt"
IF ERRORLEVEL 0 GOTO OK "temp.txt"
:NG
@echo 埼玉県 なし >> kekka.txt
GOTO END
:OK
@echo 埼玉県 あり >> kekka.txt
GOTO END
:END

255 名前:254 [2007/07/24(火) 17:07:37 ID:1kH5Q7z7]
すみません
自己解決しました

256 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 22:05:23 ID:UeCXx0RV]
スレ違だけどWin98のショボいコマンド使うぐらいだったら、良い機会だからVBSでも使いなよ

Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objTxIn=objFSO.OpenTextFile(".\temp.txt",1)
Do Until objTxIn.AtEndOfStream
buf=objTxIn.ReadAll
Loop
objTxIn.Close
ArrResult=Array(0,0)
if instr(1,buf,"東京都")>0 then ArrResult(0)=1
if instr(1,buf,"埼玉県")>0 then ArrResult(1)=1
strResult=Cstr(ArrResult(0)) & Cstr(ArrResult(1))
Select Case strResult
Case "11" Call WriteResult("東京都あり"&vbcrlf&"埼玉県あり")
Case "10" Call WriteResult("東京都あり")
Case "01" Call WriteResult("埼玉県あり")
Case Else WScript.Echo "ないよ"
End Select

Sub WriteResult(strWord)
Set objTxOut=objFSO.OpenTextFile(".\kekka.txt",2,True)
objTxOut.WriteLine(strWord)
objTxOut.Close
End Sub

257 名前:名無し~3.EXE [2007/07/24(火) 22:06:42 ID:cEJUopRP]
質問させてください。Windows98のバッチファイルで、
ネットワークドライブの情報と、使用しているプリンタ名の情報を
取得する事は出来ますでしょうか?

258 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 22:41:21 ID:UeCXx0RV]
EnumNetworkDrives
EnumPrinterConnections


259 名前:257 mailto:sage [2007/07/24(火) 22:49:55 ID:cEJUopRP]
vbsを今から勉強している余裕が無いんです…
バッチじゃ無理ですかね

260 名前:名無し~3.EXE mailto:sage [2007/07/24(火) 23:00:45 ID:FTD7xDte]
@echo off
start /w regedit /e c:\aaaa.txt HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers
type c:\aaaa.txt
del c:\aaaa.txt




261 名前:257 mailto:sage [2007/07/25(水) 00:09:05 ID:3jXjVge/]
>>260
バッチでレジストリのデータ取得できるんですか!
今環境無いんですが、明日試して見ます。
ありがとうございます!

262 名前:名無し~3.EXE mailto:sage [2007/07/26(木) 01:04:45 ID:/KjPiacH]
バッチファイルのマニュアルって無いでしょうか?
MSDNを探したけど見つかりませんでした

for /?やwindowsのヘルプでコマンド名で検索すればそのコマンドについての説明はでてくるのですが
網羅的なものや文法以外の事(例えば変数の扱いについてなど基本的なルール)が書かれている
文書が欲しいです

263 名前:名無し~3.EXE mailto:sage [2007/07/26(木) 01:20:39 ID:yErmTSil]
>>261
コマンドでレジストリ読み書きできるのはXP/2003から
98ではできない

98のDOS窓でできる事を確認するには
ヘルプにコマンドラインリファレンスがあったかも
あるいはこれを立ち読みして確認しる
www.gihyo.co.jp/books/syoseki.php/4-7741-0636-4

>>262
とりあえずヘルプの「コマンド ライン リファレンス」見れ
物足りなければこういうの買うか立ち読みしる
www.gihyo.co.jp/books/syoseki.php/4-7741-1674-2

264 名前:名無し~3.EXE mailto:sage [2007/07/26(木) 01:30:53 ID:gEngnIuG]
ネットで検索すればある程度は出てくると思うけど、古い9x時代の頃の情報が多くて
最近のしっかりしたサイトは知らないなぁ。@ITくらいか。

お金を出しても良いなら下手にWebで探すより書籍を買っちゃった方が早いかもね。
自分も1冊買ったけど、買って良かったと思ってる。
あと自分の場合 craftlaunch 使ってるので CMD.EXE /C %arg /? > %arg.TXT みたいな
コマンド作っちゃって、一発でコマンド名.txtが出来るようにしてる。

ちなみに変数はPATH /?かCALL /?で一通りのことは分かると思うよ。


265 名前:名無し~3.EXE mailto:sage [2007/07/26(木) 01:35:36 ID:gEngnIuG]
オレが買ったのも>263の奴だ。結構良いと思うよ。


266 名前:名無し~3.EXE mailto:sage [2007/07/26(木) 01:55:53 ID:kf5FBSiR]
とりあえずヘルプを読むといい。
仕様は全てヘルプに書かれている。
(ある特定コマンドについてはwin2000ではコマンドヘルプの方が詳しいものも一部ある。
 またどう使うか応用はサイトめぐりか本でも買え)
まあ、ヘルプファイルを不要として削除しちゃってるバカもいるけど。
一度は全部読み通してみるといい。

267 名前:名無し~3.EXE mailto:sage [2007/07/26(木) 02:00:19 ID:kf5FBSiR]
>>264
コマンドヘルプだけでは明らかに情報不足に陥る。
それでは複雑なBATは書けない。

268 名前:名無し~3.EXE mailto:sage [2007/07/26(木) 02:26:44 ID:p3iWQA+4]
適当に立ち寄った本屋にあったこれを買った俺は負け組み
ttp://www.amazon.co.jp/dp/4816332545

269 名前:名無し~3.EXE mailto:sage [2007/07/26(木) 08:12:26 ID:5Vip6UWZ]
>複雑なBAT

この時点で間違ってる
複雑な処理させたければWSHなりにしろ

270 名前:257 mailto:sage [2007/07/26(木) 13:22:22 ID:Bs03WwTU]
>>260
遅くなりましたが目的の情報を取得することが出来ました。
このコマンドで他の情報も持って来れそうです
ありがとうございました

>>263
260さんの記述でレジストリのデータを読めましたよ



271 名前:名無し~3.EXE mailto:sage [2007/07/26(木) 14:00:30 ID:gN9jmhD8]
>>269
基本だが、変数として有効な文字とか変数サイズの上限とか全体の総バッファ長とか
& && | || ; , ^ とか、0< 1> 2> 1>&2 2<&1とかWSHの呼び出し方とか
コマンドヘルプじゃわからないよ

272 名前:名無し~3.EXE mailto:sage [2007/07/26(木) 15:23:00 ID:Bs03WwTU]
wshって素のままのWindowsOS(95からxpまで)で
バッチみたいに使えるの?

273 名前:名無し~3.EXE mailto:sage [2007/07/26(木) 15:50:08 ID:04gKUhKK]
95は素では無理

274 名前:名無し~3.EXE mailto:age [2007/07/27(金) 01:06:16 ID:rXnUgSS7]
cd hoge >> log\normal.log 2>> log\error.log

みたいに書いても正常に動作しないのですが、
標準出力と標準エラー出力をそれぞれ別々のファイルに保存する方法を
教えていただけませんか?両方を1つのファイルに保存するなら
cd hoge 2>&1 >> ryouhou.log
ですよね。

275 名前:名無し~3.EXE mailto:sage [2007/07/27(金) 01:15:31 ID:dNpld2gr]
(cd hoge >> log\normal.log) 2>> log\error.log

276 名前:名無し~3.EXE mailto:sage [2007/07/27(金) 01:19:42 ID:fMDvaNVV]
>>274
どんな現象になるの?
cd hoge >> log\normal.log 2>> log\error.log
これでちゃんと動作したけど?

277 名前:名無し~3.EXE mailto:age [2007/07/27(金) 01:22:53 ID:rXnUgSS7]
>>276
cdだと動作するかもしれませんが他のコマンドだとちゃんと動作してないような・・・。
copy /Y とかで試してみると多分動かないかと。。
正しい書き方を知らない物で 正当な書き方をお聞きしたいのですが・・・。
>>275さんのが正しい書き方なのですかねぇ。

この場合( ) の中が最初に評価されるから 仮になんらかの原因( normal.logファイルへの書き込み
権限が無かったり)で、コマンドの実行自体は成功しているのにnormal.logへ書き込めなかったから
エラーだと判断されて error.logにかかれたりはしないのかなぁ・・・。
いまいちこの辺よく分からない。

278 名前:名無し~3.EXE mailto:sage [2007/07/27(金) 01:24:50 ID:fMDvaNVV]
copy /y
dir hoge
で試したけど問題なく動作したよ

279 名前:名無し~3.EXE mailto:age [2007/07/27(金) 01:37:52 ID:rXnUgSS7]
>>278
マジですか・・・。 じゃあリダイレクションの問題じゃなくて
私が何か間違えているのかも。Windows版 pdumpfsを動かして検証してみたところ上手く
いかなかった物で・・・。 失礼しました。

280 名前:名無し~3.EXE mailto:sage [2007/07/27(金) 01:45:37 ID:/AUK6hlH]
>>279
これって相対パス指定してるんだが、カレントディレクトリ配下に間違いなくlogフォルダはあるのか?
無ければ当然の結果だけど
>指定されたパスが見つかりません。
となる



281 名前:名無し~3.EXE mailto:age [2007/07/27(金) 01:48:08 ID:rXnUgSS7]
pdumpfs.exe C:\data C:\saki >> log\normal.log 2>> log\error.log
こんな感じ。
実際には引数で渡して変数に格納して使っているので
%PRG% %MOTO% %SAKI% >> log\normal.log 2>> log\error.log
こんな感じ。
それでエラーが起きたときは error.logに書かれるのに
正常に実行できた時は normal.logに何も書かれないからおかしいなぁと思って。

282 名前:名無し~3.EXE mailto:age [2007/07/27(金) 01:48:48 ID:rXnUgSS7]
>>280
コード中に

REM logフォルダがない場合は作成する
if not exist log\nul (
mkdir log
)

ってあるのでlogフォルダは確実にあります。

283 名前:名無し~3.EXE mailto:sage [2007/07/27(金) 02:57:22 ID:S6Sd4k6B]
>>282
どこのコマンドを使ってる?
ググってpdumpfs-w32-1.3.zipをゲットして試したら実行しても
標準(エラー)出力に何も出力されないまことに静かなるコマンドだったんだが?

284 名前:名無し~3.EXE mailto:age [2007/07/27(金) 08:13:51 ID:rXnUgSS7]
>>283
www.monochrome.jp/~katsuwo/software/pdumpfs-for-windows/

これです。
で、私の勘違いだったようで、なんだか
pdumpfs.exe C:\moto C:\saki >> normal.log 2>> error.log
で動作しているようです。なぜ勘違いしたのか未だによく分かりませんがOTL
お手数をお掛け致しました。

しかし1つ気になる事が。

pdumpfs.exe C:\moto C:\saki >> normal.log 2>> error.log

で動作したのですが

(pdumpfs.exe C:\moto C:\saki >> normal.log) 2>> error.log
こういう風に ()で囲った方がいいのでしょうか?どう書くのが慣例なのでしょう?
また、 ( )で囲った方がいいなら、その理由は? 質問の締めくくりとして
ご教示宜しくお願い致します。

285 名前:名無し~3.EXE mailto:sage [2007/07/27(金) 11:30:18 ID:+rjyunv5]
誰も締めくくりたいなんて思っちゃいない予感

286 名前:名無し~3.EXE mailto:sage [2007/07/27(金) 21:28:47 ID:lyQPBbWY]
82C8
82BE
82AD
82BD
82C1
82DC

287 名前:名無し~3.EXE mailto:sage [2007/07/27(金) 21:33:47 ID:BKYgm8FZ]
まったくだな

288 名前:名無し~3.EXE mailto:sage [2007/07/28(土) 18:33:15 ID:a/qCxIPC]
有効なドライブの一覧を表示するコマンドってないですか

289 名前:名無し~3.EXE mailto:sage [2007/07/28(土) 18:50:31 ID:m2ZCRxis]
fsutil fsinfo drives

290 名前:288 mailto:sage [2007/07/28(土) 18:53:48 ID:a/qCxIPC]
どうもありがとう



291 名前:名無し~3.EXE mailto:sage [2007/07/30(月) 13:03:56 ID:BT+WwteJ]
携帯から失礼します超初心者スレとマルチになってしまいますが、質問させてください

WindowsXP home editionを使用してるんですが、msconfig→システム構成ユーティリティから「BOOT.INI」にあるタブの「/SAFEBOOT(F)」にチェックを入れてセーフモードを機動したんです。セーフモードコマンドプロントの画面になり、そこから通常の時に戻れません
どうすれば元に戻せますでしょうか?

292 名前:名無し~3.EXE mailto:sage [2007/07/30(月) 14:58:07 ID:le5R9q0P]
>>291
感だから駄目かもしれないけど。
cd c:\windows
start

293 名前:名無し~3.EXE mailto:sage [2007/07/30(月) 17:01:28 ID:7XlSPz/J]
コマンドライン上からmsconfigやexplorerを起動するなり、
notepad c:\boot.iniするなり方法は色々あるはず。

294 名前:名無し~3.EXE mailto:sage [2007/07/30(月) 17:23:16 ID:BT+WwteJ]
>>292
>>293
無事元に戻すことができました
ありがとうございました

295 名前:名無し~3.EXE [2007/07/31(火) 16:20:44 ID:8GY6o1TN]

Windows98のMS-DOSプロンプトで質問があります。

cd C:\test
dir /B /S > C:\WINDOWS\デスクトップ\test
cd C:\test2
dir /B /S > C:\WINDOWS\デスクトップ\test2

↑のようなバッチでC:\testとC:\test2配下のディレクトリ構成を
テキストファイルとして保存したいのですが、
C:\test2というフォルダが存在しない場合、
バッチの実行結果では、dir /B /S > C:\WINDOWS\デスクトップ\testの内容を
test2のファイルとして残されてしまいます。
C:\test2というフォルダが存在しない場合、0kbのtest2ファイルとして
残す方法を御教示ください。よろしくお願いします。


296 名前:名無し~3.EXE mailto:sage [2007/07/31(火) 18:43:44 ID:Hu1nS5yr]
0Byteのファイルの作り方がわからん

if exist C:\test2\nul echo.>C:\WINDOWS\デスクトップ\test2


297 名前:名無し~3.EXE mailto:sage [2007/07/31(火) 18:45:01 ID:Hu1nS5yr]
>>296 ミスッた
if not exist 〜 ね

298 名前:名無し~3.EXE mailto:sage [2007/07/31(火) 19:25:23 ID:uQa6Hv3d]
if exist "c:\test\nul" dir "c:\test" /b /s > test.txt
if exist "c:\test2\nul" dir "c:\test2" /b /s > test2.txt

Windows98 の dir って処理先指定できないんだっけ??
できなかったら無理だけど。


299 名前:名無し~3.EXE mailto:sage [2007/07/31(火) 19:30:28 ID:uQa6Hv3d]
あ、0byte のファイル作りたいのか...。
else とか () とか使えたっけ?もう分からん。

使えるなら
if exist "c:\test\nul" (dir "c:\test" /b /s > test.txt) else (echo.> test.txt)
if exist "c:\test2\nul" (dir "c:\test2" /b /s > test2.txt) else (echo.> test2.txt)

使えないなら >298 に↓を追記。
if not exist "c:\test\nul" echo.> test.txt
if not exist "c:\test2\nul" echo.> test2.txt


300 名前:名無し~3.EXE mailto:sage [2007/07/31(火) 19:36:10 ID:Hu1nS5yr]
いや echo.> test.txt だと2bytesになるっしょ。
それと else とか () は使えない。



301 名前:名無し~3.EXE mailto:sage [2007/07/31(火) 20:24:25 ID:1QfNp2Sl]
type nul > po.txt

302 名前:名無し~3.EXE mailto:sage [2007/07/31(火) 20:42:45 ID:XA8WQJFO]
>301
それ少なくともMS-DOS(3.3/5.0/6.2)/Windows95/98/Me/NT4.0/2000/XPでは正解。
他のOSでは確認してないが。

303 名前:名無し~3.EXE mailto:sage [2007/07/31(火) 20:44:51 ID:ChlSZmRF]
CreateObject ("Scripting.FileSystemObject").CreateTextFile ".\test2.txt",True

304 名前:名無し~3.EXE mailto:sage [2007/07/31(火) 21:11:25 ID:mIH/KnHc]
俺は
copy nul hoge
でやってた

305 名前:名無し~3.EXE mailto:sage [2007/07/31(火) 23:22:23 ID:XA8WQJFO]
>304
そっちは確かNT系のWindowsのみ可能だったはず。

306 名前:名無し~3.EXE mailto:sage [2007/07/31(火) 23:55:09 ID:IK31m5SS]
DOS/9x系なら
rem>hoge
ってのもある。

307 名前:名無し~3.EXE mailto:sage [2007/08/01(水) 13:15:29 ID:3O9k4hax]
0バイトのファイルを作る方法って定期的に出てくるよね。
俺の一番のお気に入りは
rem>hoge.txt
これを知ったのは20年ぐらい前のfj.os.dosあたりだったと思う。

NTだと
.>hoge.txt
ってのもある。
エラーが出るけどファイルはちゃんと作られてる。
文字数はこれが最小。

エラーが出ない最小はなんだろう?

308 名前:名無し~3.EXE mailto:sage [2007/08/01(水) 22:21:01 ID:9V4T7tMX]
cd.>fuga.txt

98/2k/Vistaで確認。

309 名前:名無し~3.EXE mailto:sage [2007/08/05(日) 16:18:47 ID:Bp/DvISo]
XPではダメですか  つД`)・゚・。・゚゚・*:.。..。.:*・゚

310 名前:>302,305 mailto:sage [2007/08/05(日) 20:54:33 ID:W6ka+1nd]
>308
その手もあったか。XPでもできたよ。俺は>301の方法が最も無難だと思ってるが。



311 名前:名無し~3.EXE [2007/08/06(月) 21:13:46 ID:+YTckNXT]

20070805.txt
20070804.txt
20070803.txt

上のようなログファイルがあり、
日付が一番古いファイル(20070803.txt)を
バッチで削除したいと思ってます。

dir /B /D > file で、ファイルを古い順に
並べられるのですが、全てのファイル名が入ってしまいます。
先頭の1行目だけにファイルにすれば、FOR文で抜き出して
削除できそうだと思うのですが、何か良い方法が無いでしょうか。
環境は、Windows2000とXPです。よろしくお願いします。

312 名前:名無し~3.EXE mailto:sage [2007/08/06(月) 22:55:39 ID:XO1cJNnw]
@echo off
call :sub
del "%f%"
goto :EOF
:sub
for /F "usebackq delims=" %%i in (`dir /B /D`) do (
set f=%%~i
goto :EOF
)

313 名前:311 mailto:sage [2007/08/07(火) 22:19:14 ID:mOWz8I7r]
>>312
遅くなってすみません。
目的の動作が出来ました。
ありがとうございました!

314 名前:名無し~3.EXE mailto:sage [2007/08/08(水) 03:46:30 ID:bRJsedJb]
for /f "delims=" %%i in ('dir /b/a-d/on') do del %%i && goto :eof

これだけでいいんでわ…

315 名前:名無し~3.EXE mailto:sage [2007/08/08(水) 23:50:03 ID:d9CU6bSI]
質問お願いします。

set temp=おはよう
set temp2=こんにちは
set temp3=さようなら
set temp4=%temp%%temp2%%temp3%
echo %temp4%


このようなバッチを書くと結果が、
おはようこんにちはさようなら
↑のようになります。これを、

おはよう
こんにちは
さようなら

といった風に表示させたいのですが、
変数の中に改行コードを入れる事は可能でしょうか。
\n等をいれてみたのですが、そのまま表示されてしまいました。
また、もし可能だとしたら、変数には何文字くらい
代入が可能でしょうか。


316 名前:名無し~3.EXE mailto:sage [2007/08/09(木) 00:23:38 ID:5dR+4Z7j]
>>315
>変数の中に改行コードを入れる事は可能でしょうか。
set temp=おはよう
set temp2=こんにちは
set temp3=さようなら
set temp4=%temp%^

%temp2%^

%temp3%
echo !temp4!

>変数には何文字くらい代入が可能でしょうか。
XPの場合、変数1つにつき 8192バイト、
全環境変数の合計は変数名、等号を含めて 65536KBまで。

317 名前:315 mailto:sage [2007/08/09(木) 00:40:16 ID:YG2BLxw3]
>>316
すみません。
XPで試したのですが、うまく行きません。

318 名前:名無し~3.EXE mailto:sage [2007/08/09(木) 01:55:20 ID:c4/2tjXG]
>>317
つsetlocal enabledelayedexpansion

319 名前:名無し~3.EXE [2007/09/06(木) 22:13:52 ID:p7g9huyD]
お世話になります。
コマンドプロンプトでヘルプを読むときに、
dir /? 等と打つと、dirのヘルプを読めますが、
全てのマニュアル内容を表示させることは出来るでしょうか?
出来れば、ひとつのファイルにリダイレクトして、
コマンドプロンプトのヘルプとして保存したいと思います。
使用OSは、XPですが98やNT/2000での表示方法も違うようでしたら
ご教授頂ければ幸いでございます。
よろしくお願いします。

320 名前:名無し~3.EXE mailto:sage [2007/09/06(木) 22:24:57 ID:cBR0cADs]
(for /f "tokens=1" %a in ('help') do %a /?) >help.txt
こんな感じのこと?
ファイルが長ったらしいし必要なときに必要なコマンドのヘルプだけ参照した方がいいと思うけど…



321 名前:名無し~3.EXE mailto:sage [2007/09/06(木) 23:33:19 ID:p7g9huyD]
>>320
そうです!助かりました。ありがとうございます!

322 名前:名無し~3.EXE mailto:sage [2007/09/07(金) 01:47:00 ID:asFtjM75]
C:\WINDOWS\pchealth\helpctr\binaries\HelpCtr.exe /url ms-its:ntcmds.chm::/ntcmds.htm

こっちだろ…

323 名前:名無し~3.EXE mailto:sage [2007/09/07(金) 01:52:31 ID:d+r8xArP]
start helpctr /url ms-its:ntcmds.chm::/ntcmds.htm
または
hh ms-its:ntcmds.chm::/ntcmds.htm

324 名前:名無し~3.EXE mailto:sage [2007/09/10(月) 13:18:02 ID:HtOy1mDZ]
BATの質問です。
条件分岐はどの様にやれば宜しいのでしょうか。

具体的には、
 メッセージ:  ○○を実行しますか?(Y/N)
 Yの時はラベルAのコマンド群をNの時はBAT終了。


ご教示、よろしくお願いいたします。

325 名前:名無し~3.EXE mailto:sage [2007/09/10(月) 13:51:50 ID:AyQQeB8K]
>324
MD-DOS時代にはChoiceで選択できたらしい
今はそれが使えないからChoiceの代わりにこういう風にする
haoki.hp.infoseek.co.jp/MS-DOS/ExamplesOfBatchFiles.html

326 名前:名無し~3.EXE mailto:sage [2007/09/10(月) 18:29:06 ID:HtOy1mDZ]
>>325
うまくいきました。
ありがとうございました。

327 名前:名無し~3.EXE mailto:sage [2007/09/11(火) 14:51:32 ID:tSfBcypB]
WindowsNT/2000などの別売リソースキットに収録されてる CHOICE.EXE (CHOICE.COMじゃない)が
そのままXPでも使える。

328 名前:名無し~3.EXE mailto:sage [2007/09/11(火) 16:52:42 ID:Coumuge0]
choice.exeは無償のものがMSからdownloadできる。

329 名前:名無し~3.EXE mailto:sage [2007/09/13(木) 00:30:10 ID:ZL/yiW6X]
チョイっとね♪

330 名前:名無し~3.EXE [2007/09/16(日) 21:54:53 ID:3LXuaGLV]
リネームに関することで質問です。
ファイル名のデータをエクセル内から取得することは可能でしょうか?

例えば、B2のセルに「hoge」、C4のセルに「hage」と入っているとして、
そのエクセルファイルをバッチファイルにドラッグ&ドロップすると、
「hogehage.xls」とリネームされるようにしたいのです。
リネーム前のファイル名は不定です。
よろしくお願いします。



331 名前:名無し~3.EXE mailto:sage [2007/09/16(日) 23:47:26 ID:tctmZAgJ]
>>330
無理な気がする。WSHなら出来るかもしれないが。
エクセルファイルがあるんなら、それをテキストファイルに落として、
テキストファイルからリネームさせれば?
それならバッチでもリダイレクト出来るだろう

332 名前:名無し~3.EXE mailto:sage [2007/09/17(月) 00:32:42 ID:1iW1pKfD]
Set Application=CreateObject("Excel.Application")
MsgBox Application.ExecuteExcel4Macro("'C:\Documents and Settings\My Documents\[Book1.xls]sheet1'!R1C1")
みたいに

333 名前:名無し~3.EXE mailto:sage [2007/09/17(月) 09:34:26 ID:Gub8Dds7]
ファイル名を変更の単純作業を命じられて途方に暮れてるんだろな
Excelからリストを含んだVBSかなんかを出力させるようにすりゃ良いんだよ


334 名前:名無し~3.EXE [2007/09/17(月) 09:56:58 ID:u5TAhrJD]
>>330
エクセルからCVSにでも変換すれば何とかなるんじゃ?
ただ、ファイル名にスペースが含まれる場合などは、きちんと対策しておかないと死ぬと思うので要注意。

335 名前:名無し~3.EXE mailto:sage [2007/09/17(月) 10:12:35 ID:P35yenRW]
hoge.txtをmoveするときに目的フォルダに同名ファイルがあるとします。
そのとき、移動するファイル名に-002とかを付加してmoveすることは出来ますか?

336 名前:名無し~3.EXE mailto:sage [2007/09/17(月) 11:43:28 ID:qFWL8DrH]
if exist でかくにんしれ

337 名前:名無し~3.EXE mailto:sage [2007/09/17(月) 13:40:32 ID:P35yenRW]
>>336
ありがとう。やってみます。
コマンドライン初心者ですけど、頑張ります!
フィル振り分けソフトってろくなのが無いので、バッチファイルが書けるまで頑張ります!

338 名前:名無し~3.EXE mailto:sage [2007/09/18(火) 01:58:17 ID:gMM571jL]
hoge.exe に -foo -bar オプションを付けて
いくつものフォルダ(数百個)に分散した大量のファイル(約50万個)を渡したいんですが
バッチファイルでファイル名を書いたtxtを勝手に参照してもらう方法は無いでしょうか。
あるいは他にもっと手っ取り早い方法はないでしょうか。

339 名前:名無し~3.EXE mailto:sage [2007/09/18(火) 03:46:19 ID:gdYBVbuE]
for /f


340 名前:名無し~3.EXE mailto:sage [2007/09/18(火) 20:52:10 ID:VaDU0MRP]
質問させてください。
FireFoxとかインストールするときに次へ進むボタンとかあるけど
batだけで全部インストール処理できますか?



341 名前:名無し~3.EXE mailto:sage [2007/09/18(火) 21:47:07 ID:y2b0bLvN]
インストーラにそーいうオプションスイッチがあれば可能。
なければ無理。batでボタン押したりは出来ない。wsh使え。

342 名前:340 mailto:sage [2007/09/18(火) 22:17:18 ID:VaDU0MRP]
>>341
ありがとうございます。
ちょっと調べましたがwshで作ったコードを保存したら.vbsになりますよね。
ということは全てのwindows環境で実行することができませんよね?
できれば.exeとか.batでありませんでしょうか?

343 名前:名無し~3.EXE mailto:sage [2007/09/18(火) 22:23:59 ID:OeER2hXe]
何を言っているんだ

344 名前:340 mailto:sage [2007/09/18(火) 22:35:51 ID:VaDU0MRP]
>>343
ごめんなさい。.vbsって実行できますよね。
勘違いしてたみたいですね。
ありがとうございました。

345 名前:名無し~3.EXE mailto:sage [2007/09/19(水) 01:45:03 ID:fRhBg93X]
このスレのこのマターリ感が好きつーか殺伐とした俺漏れの仕事の疲れを癒してくれる。
Pt.2かPt.3の頃から進化しないつーか深化しないと言えばそれまでだけど。
けして悪口じゃなくて本心です。

346 名前:名無し~3.EXE mailto:sage [2007/09/19(水) 04:12:41 ID:xdlzKm9f]
>>344
>>.vbsって実行できますよね。

できませんよ。

347 名前:340 mailto:sage [2007/09/19(水) 09:45:46 ID:+9iiRmg+]
>>346
あ、やっぱできませんでしたか。
じゃあやっぱ.batみたいな普通の環境で実行できるやつがいいな。。
wsh以外でインストーラーのボタンを押せるもの何かありますか?

348 名前:名無し~3.EXE mailto:sage [2007/09/19(水) 10:34:13 ID:hmqMAoL+]
なんでWSHが実行できないの?禁止されてる環境なのか?

349 名前:名無し~3.EXE mailto:sage [2007/09/19(水) 22:42:31 ID:xdlzKm9f]
>>348
Windows 3.1 とか、Win95(with out IE)とか

350 名前:名無し~3.EXE mailto:sage [2007/09/20(木) 11:01:44 ID:1uTHvdSs]
そういやWin95のOSR2でもWSHを使える環境と使えない環境を見た覚えがある。



351 名前:名無し~3.EXE mailto:sage [2007/09/20(木) 11:52:07 ID:ylAti8AR]
そんな昔のOSは使ってないと思うよ。
普通はvbsは実行できるはず。

352 名前:名無し~3.EXE mailto:sage [2007/09/22(土) 14:17:28 ID:u6hq42dc]
95は場合によっては現役だったりするかもしれないけど
FireFoxってWin3.1で動くの?


353 名前:名無し~3.EXE mailto:sage [2007/09/22(土) 14:41:01 ID:K4jH93N6]
FireFoxはNT4.0ならサポートしてるな。

354 名前:名無し~3.EXE mailto:sage [2007/09/23(日) 00:11:23 ID:0zXrh7do]
FTPのコマンドに関する質問です。
会社と家で同じファイルの同期をとり続けるためにFTPのコマンドを使おうとしています。
(やりとりに使うサーバはさくらのレンタルサーバです)
家ではうまく接続でき、問題なくダウンロード、アップロードできるのですが、
会社ではダウンロード、アップロードがうまくいきません。
ブラウザではプロキシの設定をしているので、プロキシの設定が必要なのかと思い、
Windows標準のFTPクライアントでは不可能っぽいので諦めていたのですが、
FFFTPでは導入してすぐにダウンロードできているのでよく原因がわかりません。
詳しい方ご教授お願いします。

355 名前:名無し~3.EXE mailto:sage [2007/09/23(日) 00:29:56 ID:YiMPoOFi]
>>354
・FTPコマンド実行時、どの段階でうまく行かなくなるのか
 実際に入力しているコマンドとそれによる標準出力を列記
 (FTPサーバ名やユーザ名等、個人情報はマスク)

・うまく行かない時に表示されるメッセージと挙動の詳細

まずは、以上について説明して下さい。
「うまくいかない」だけでは回答しようがないのです。

356 名前:名無し~3.EXE mailto:sage [2007/09/23(日) 00:33:47 ID:0zXrh7do]
>>355
すみません……。
今家で正確なエラーメッセージの確認はできないです。月曜に確認してきます。
ただ接続はうまくいっていて、
getとputの段階でプロンプトが落ちる、という症状でした。
ログは取っていたのでそこまでわかったのですが、エラー内容までは覚えていません。
今言えるのはここまでです。失礼しました。

357 名前:名無し~3.EXE mailto:sage [2007/09/23(日) 09:46:45 ID:Tq1GuzbT]
月曜は休みだぞ

358 名前:名無し~3.EXE mailto:sage [2007/09/23(日) 10:06:36 ID:ZAaCzpBz]
うちの会社は出勤日だ

359 名前:名無し~3.EXE mailto:sage [2007/09/23(日) 12:54:59 ID:oPSAXKaI]
452

360 名前:名無し~3.EXE [2007/09/23(日) 14:14:04 ID:r/hHw6Mr]
こんにちわ。
renコマンドで、サブフォルダの中のファイルも一括で処理することはできますか?
ものによっては/sというスイッチをつける物もあるようですが、renではできませんよね?



361 名前:名無し~3.EXE mailto:sage [2007/09/23(日) 18:38:08 ID:BAQKEi+X]
そうですね。

362 名前:名無し~3.EXE mailto:sage [2007/09/23(日) 18:57:58 ID:/Q7UHlkY]
>>356
会社だとファイヤーウォールの内側なので
FTPのデータ転送コネクション確立のための外部からの接続要求は
ファイアーウォールによって弾かれ接続できない。
従って、内側から接続要求を出す必要がある。
このためにはPASV(パッシブ)モードにして内部から接続要求を出す必要がある。
が、windowsのftpサブコマンドにはpassiveが無いので
(2000までには無かった。たぶんXPやVistaにも無かろうと思う)
もっと高機能なftpクライアントが必要。

363 名前:名無し~3.EXE mailto:sage [2007/09/23(日) 19:01:43 ID:/Q7UHlkY]
なお、ftpコマンドでダメでもExplorerやInternet ExplorerではPASVモードを
サポートしてるのでアクセス可能

364 名前:名無し~3.EXE mailto:sage [2007/09/24(月) 01:51:00 ID:pRSpVT9A]
>>360
拡張子をlog→txtにするなら
FOR /F "DELIMS=" %A IN ('DIR "E:\hoge hoge\*.log"/B /S /A-D') DO REN "%A" "*.txt"
こんな感じかな


365 名前:名無し~3.EXE [2007/09/24(月) 06:50:04 ID:AiJMwWuW]
>>364
できました!コマンドラインも奥深いわ。めっちゃありがとう。

366 名前:名無し~3.EXE mailto:sage [2007/09/24(月) 19:00:56 ID:+Pu3qWa3]
>>362
今日会社でその結論にたどり着きました。

諦めてFFFTPでやりとりしようと思います。
家では自動化できるだけマシと思いつつ……。

367 名前:名無し~3.EXE mailto:sage [2007/09/25(火) 09:21:29 ID:qp05KsMz]
FFFTPでも簡単なことならコマンドラインで指定できるけどね。
ncftpを使ったほうがいいかも。

368 名前:名無し~3.EXE mailto:sage [2007/09/29(土) 12:59:58 ID:rhAGaWpx]
ファイル名にAとBが含まれているのを選択してmoveしたいのですが、どうしたらいいのでしょうか?
*A*B*と*B*A*と書く方法しか知らないので、ご教授をお願いします。

369 名前:名無し~3.EXE mailto:sage [2007/09/29(土) 19:13:18 ID:ONh9+IA8]
WindowsのCUI、バージョンアップするたびに強化され、GUI経由でしか出来ないことが減ってきて
管理しやすくなってきたけど、Windows Server 2008ではついにエクスプローラシェルの排除まで
出来るようになるらしい。
www.atmarkit.co.jp/fwin2k/winsv2008/01overview/01overview_04.html

370 名前:名無し~3.EXE mailto:sage [2007/09/29(土) 19:18:04 ID:ONh9+IA8]
この勢いで次バージョンあたりでキャラクタコンソールのみのインストールオプションも付けてほしい。



371 名前:名無し~3.EXE mailto:sage [2007/09/29(土) 23:04:46 ID:QieKgrdm]
>>366
めっちゃ遅レス、かつ>>367もちょこっと言ってる事だけど、Win標準ftp.exeより
高機能なFTPクライアントは結構ある。

例(シェアはシラン)

ttp://www.abk.nu/~kattyo/freesoft.htm#prog_ftp
⇒使わなかったけど、if文とかつかえて面白そう
ftp-for-win32.zip
⇒UNIXの移植版 PASVが使えるけど、mget *でバグがあったような
ttp://www.geocities.jp/rich_slipper/soft/soft.html
⇒1ライナーで使えるのでバッチファイルとかに組み込みやすい。
ttp://www.hi-ho.ne.jp/babaq/basp21.html
⇒WSH等で使える。

自分もFTP操作自動化で最近悩んでたので、ついで。



372 名前:名無し~3.EXE mailto:sage [2007/09/29(土) 23:16:34 ID:dWv53Cay]
>>368
AとBはそれぞれ一個ずつなのか?それとも重複してもいいのか?例 aaabbaaa.txt
また、aとbは文字通りの一文字なのか?それともwordなのか?
まあ、forとfindstrを組み合わせて(必要ならパイプでデータ受け渡し)、正規表現でヒットさせろよ

373 名前:名無し~3.EXE mailto:sage [2007/09/30(日) 02:06:32 ID:i+tF55N1]
>>372
ありがとうございます。重複してもいいです。
具体的にはファイル名に「福田康夫」と「国会」の2つを順不同で含むファイルをC:\福田康夫\国会へ移動したいのです。
名前が100人分、案件が各20件で計2000の振り分け条件で振り分けたいのですが、フリーソフトを使うとCPU使用率が100%に張り付くので
パッチ処理にトライしている次第です。
ご教授の方法でトライします。結果を報告できるようがんばります。

374 名前:名無し~3.EXE mailto:sage [2007/09/30(日) 02:53:16 ID:D3bkO61x]
ほんの一例
dir/b | findstr 福田康夫 | findstr 国会 >tmp.txt
for /f "delims=" %%I in ('type tmp.txt') do move "%%~I" c:\福田康夫\国会
del tmp.txt

375 名前:373 mailto:sage [2007/09/30(日) 05:04:24 ID:/1yS/Qr0]
>>374
今、酔っぱらっていますが、すっげー感激。
明日、素面になったらやってみます。
マジ、感激してます。ありがとう御座います。

376 名前:名無し~3.EXE mailto:sage [2007/10/05(金) 08:18:44 ID:ysb+mHrv]
HDD内のデーターに、操作するとCRC冗長エラー、を出すファイルがあったので

そのドライブに対して、CHKDSK ドライブ: /R をかけたら
昨夜から10時間以上やって29%しか進みせん
タスクマネージャー/プロセスでchkdsk.exeが仕事をしている様子も全然なし。(0%)
1時間前には6%だったので完全には死んではいないと思うのですが…。
(6%で長時間停止->動き出す->29%でまた停止)

これはもうドライブが死亡間近と考えて新しい外付けにデータを退避させることも考えているのですが、
現在やっているCHKDSK と コマンドプロンプトを中断させるのは危険でしょうか?

377 名前:名無し~3.EXE mailto:sage [2007/10/05(金) 08:42:31 ID:/YK8Gma1]
いつ中断してもいいよ

378 名前:名無し~3.EXE mailto:sage [2007/11/01(木) 15:30:20 ID:5dS7zZtr]
hosyu

379 名前:名無し~3.EXE mailto:sage [2007/11/04(日) 07:04:04 ID:V+2wa1CI]
今日初めて知ったこと

C:\>set /a 7*7
49
C:\>_

変数名書かなければ、計算出来たのか。

380 名前:名無し~3.EXE mailto:sage [2007/11/05(月) 00:18:42 ID:lgskxUHc]
C:\>set /a x=7*7
49




381 名前:名無し~3.EXE mailto:sage [2007/11/06(火) 16:25:05 ID:+zVUig6T]
バッチの中だと出ないのー

382 名前:名無し~3.EXE mailto:sage [2007/11/06(火) 21:22:54 ID:8wMnx2Yd]
変数名書こうと書くまいと
プロンプトからなら答えが出るし
バッチからだと出ない

383 名前:名無し~3.EXE [2007/11/07(水) 14:38:44 ID:TznxkJFx]
質問させてください。
ドライブレターの変更ってどうやったらよいでしょうか?
ハードディスクのレターがAになってるので、Cに変えようと思ったのですが、
コマンドがわからず・・・

384 名前:名無し~3.EXE mailto:sage [2007/11/07(水) 14:52:48 ID:BlzrMWmf]
カレントディレクトリを変更したいのか、
システム的にドライブレターを変更したいのか、
どっち?
カレントディレクトリの変更ならこのスレ的だろうけど、
システム的にドライブレターを変更したいならここじゃないと思うよ

385 名前:名無し~3.EXE mailto:sage [2007/11/07(水) 15:09:18 ID:JFoxjGSq]
>>383
HDDがAってどんな環境だ。
PC-9821にWin98でも入れてんのなら、基本的に再インストールしかないと思うよ。
システムの入ったドライブは簡単には移動できないから。

386 名前:名無し~3.EXE mailto:sage [2007/11/07(水) 18:04:53 ID:b7Qady4y]
Aドライブがハードディスクなら十中八九PC-9821だろ。

387 名前:名無し~3.EXE [2007/11/07(水) 18:10:09 ID:TznxkJFx]
そうす。
9821す。
HDDをCにしたいって事です。
でもドライブレター変更て、コマンドではできなかったでしたっけ?
なんか、駄目くさい気がしてきました・・・


388 名前:名無し~3.EXE mailto:sage [2007/11/07(水) 18:41:55 ID:fWyPbxkF]
>>387
インスコ時、ATオプションをつけるとHDDがCになったような希ガス。
外部コマンドのSUBSTでやりくりするとか。
うろ覚えなのでゲイツにでも聞いてくれ。

389 名前:名無し~3.EXE mailto:sage [2007/11/07(水) 19:05:03 ID:3xhNtlCa]
XPなら、コマンドでドライブレターの変更はできるが
それでもシステム、ブート、ページングのボリュームのドライブレターは変更できないよ

390 名前:名無し~3.EXE mailto:sage [2007/11/07(水) 20:43:48 ID:9JvKdpgS]
物持ち良いな、98かぁ



391 名前:名無し~3.EXE mailto:sage [2007/11/07(水) 22:46:47 ID:TznxkJFx]
>>388
ちょっとその方法試してみます。
なんかダメポい気もするので、駄目だったらおとなしくAで使っときます(^^



392 名前:名無し~3.EXE mailto:sage [2007/11/07(水) 23:28:26 ID:XEtIoW0A]
HDDをCにするとA,Bが当然FDDになるんだけど
1FDDの場合間違ってBにアクセスするとブラックスクリーンになるんだよね〜
害はないけど。

393 名前:名無し~3.EXE mailto:sage [2007/11/14(水) 01:13:59 ID:iPd4DuNf]
2003のコマンドプロンプトで入力途中ついTabキー押したら
ファイル名が補完されて驚いたよ
なんだいLinuxに負けず劣らず便利じゃねぇか

ついでに dir の代わりに ls で
ディレクトリ内容も表示してくれるといいなぁ

394 名前:名無し~3.EXE mailto:sage [2007/11/14(水) 01:25:55 ID:TY8Yz81u]
doskey ls=dir

395 名前:名無し~3.EXE mailto:sage [2007/11/14(水) 01:29:57 ID:PZU5+JwT]
>>393
doskey ls=dir /w $*

396 名前:名無し~3.EXE mailto:sage [2007/11/14(水) 02:32:20 ID:M6m1VNvq]
>>393
powershell入れたらいいと思うよ

397 名前:名無し~3.EXE mailto:sage [2007/11/15(木) 01:36:03 ID:wRAvcu5i]
>>394-396
ありがとー

lsでディレクトリが表示されるのは非常に快適だ
わかっちゃいるんだがつい手がlsと打ってしまうからね

Powershellってのもなかなか良さそうだ
今度時間のある時に入れてみよう

398 名前:名無し~3.EXE mailto:sage [2007/11/24(土) 20:12:56 ID:77fPn1BF]
>>392
subst b: c:\

399 名前:名無し~3.EXE [2007/11/29(木) 20:34:39 ID:9IgcnDtW]
エクセルのファイルを右クリックすると印刷というメニューがでて
それを選択すると印刷ができますが、
同様の挙動をDOSコマンドから得ることはできまつか?

400 名前:名無し~3.EXE mailto:sage [2007/11/29(木) 22:37:36 ID:83NzChea]
rundll32.exe MSHTML.DLL,PrintHTML エクセルのファイル



401 名前:名無し~3.EXE mailto:sage [2007/11/30(金) 04:00:36 ID:tDpWdtj8]
マルチでつか?
forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2481299&SiteID=7

402 名前:名無し~3.EXE mailto:sage [2007/11/30(金) 12:46:09 ID:tDpWdtj8]
>>399
お探しのものはこれでつか?
www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct04/hey1004.mspx


403 名前:名無し~3.EXE mailto:sage [2007/12/02(日) 00:11:24 ID:xxMGDSmd]
スクリプト使わずにバッチファイルでできんのか?

404 名前:名無し~3.EXE mailto:sage [2007/12/02(日) 09:46:33 ID:kErETC/K]
バッチファイルってバッチスクリプトを記述したファイルだと思ってたんだけど違うんですね

405 名前:名無し~3.EXE mailto:sage [2007/12/02(日) 23:19:31 ID:vAy7xVi5]
「バッチスクリプト」って単語を20年パソコン使ってきて初めて聞いた

406 名前:名無し~3.EXE mailto:sage [2007/12/02(日) 23:26:41 ID:Y59hieEz]
ヘルプには以下のようにある。
>バッチ プログラムまたはスクリプトとも呼ばれるバッチ ファイルを使用すると、
>簡単にルーチン作業または繰り返し作業を行うことができます。
>バッチ ファイルとは、純粋なテキスト ファイルで、1 つ以上のコマンドが含まれており、
>ファイル名拡張子として .bat または .cmd が付いています。
>コマンド プロンプトでそのファイル名を入力すると、Cmd.exe によって
>ファイルに記述されている順番でコマンドが実行されます。
>バッチ ファイルには、任意のコマンドを記述できます。for、goto、if などの特定のコマンドを使用すると、
>バッチ ファイル内のコマンドを条件に応じて実行できます。
>たとえば、if コマンドでは、条件の結果に基づいてコマンドが実行されます。
>そのほかのコマンドを使って、入出力を制御したり、ほかのバッチ ファイルを呼び出すこともできます。
>ほとんどのアプリケーションが返す標準エラー コードは、エラーが発生していない場合は 0、
>エラーが発生した場合は 1 (またはそれ以上の値) です。
>特定のエラー コードの意味を調べるには、アプリケーションのヘルプ ドキュメントを参照してください。

407 名前:名無し~3.EXE mailto:sage [2007/12/03(月) 19:35:11 ID:RVtK1L0R]
確かにあまり使わないけど、解説本等では目にするよ。
「バッチスクリプト」って。
そもそもスクリプトじゃ何のスクリプトか分からんだろ。


408 名前:名無し~3.EXE mailto:sage [2007/12/03(月) 23:25:21 ID:UMhrU1NK]
利用可能なコマンド一覧を表示するコマンド無いですか?

409 名前:名無し~3.EXE mailto:sage [2007/12/03(月) 23:39:22 ID:uge6z7Xo]
ん?helpじゃいかんのか?
それともパスの通ってるところにある全実行ファイルってこと?

410 名前:名無し~3.EXE mailto:sage [2007/12/04(火) 00:39:55 ID:Y8Lltu0y]
某むゎかふぃーのサポート(しかも法人相手の有償サポ)は
「ウィルスが検知された時にバッチプログラムを実行する機能」が
正常にバッチを実行しない旨、問い合わせをしたら
「EXEファイルしかサポートしてません」とホザきやがったよ。



411 名前:名無し~3.EXE mailto:sage [2007/12/04(火) 00:44:09 ID:z2LH0I31]
WindowsはEXEファイルしか実行できないんだからそれで十分だろ

412 名前:名無し~3.EXE mailto:sage [2007/12/04(火) 00:47:38 ID:K6BIfF3b]
てゆーか
「ウィルスが検知された時にバッチプログラムを実行する機能」
と銘打ってるんなら、ダメだろw動かなきゃ

413 名前:名無し~3.EXE [2007/12/11(火) 18:01:11 ID:m8423oGD]
Windows XPで
cmd.exeを実行したときのコンソールウィンドウの編集モードを
デフォルトで簡易編集モードに設定する方法はないのでしょうか?

ショートカットや、同じ名称のウィンドウなら個別で設定できるのですが
そうじゃなく常に簡易編集モードにする方法が知りたいです。

参考(役に立たなかった説明)
support.microsoft.com/kb/282301/ja
WinXP ではコマンド プロンプトの簡易編集モードが既定で無効

414 名前:名無し~3.EXE mailto:sage [2007/12/11(火) 18:18:39 ID:hxLMQTTa]
レジストリに設定しておけばいい

[HKEY_CURRENT_USER\Console]
"QuickEdit"=dword:00000001

415 名前:名無し~3.EXE [2007/12/11(火) 21:40:52 ID:m8423oGD]
>>414
お!すばらしいです。
既にカスタマイズしたパラメータも下のキーにあるので
これで上書きすればよいですね

416 名前:名無し~3.EXE mailto:sage [2007/12/14(金) 15:39:39 ID:EG7UyQah]
E:\WORK\hoge>dir /b /o:n
hoga.txt
hoge.txt
ho'''''ge.txt
hogee.txt
ho-----gee.txt
hogo.txt

なにやら不思議なソート結果に…何これ?

417 名前:名無し~3.EXE [2007/12/15(土) 20:32:48 ID:J3SQ8eGY]
こんにちは、質問させてください。
DOSコマンドでアプリケーションを終了したいのですが、
TASKKILLコマンドを使用して、

taskkill/im realplay.exe/f/t

とやっても、「'taskkill'は内部コマンドまたは外部コマンド、操作可能な・・・」
といったメッセージが返ってきます。

コマンドの問題箇所、もしくは他のコマンドがありましたら、
教えてくださいませ、よろしくおねがいいたします。

418 名前:名無し~3.EXE mailto:sage [2007/12/15(土) 20:59:33 ID:wVP0mofE]
taskkill /?

419 名前:名無し~3.EXE mailto:sage [2007/12/15(土) 21:07:05 ID:83Egwg+h]
OSは?2000とかならtaskkillはないよ
サポート ツールにkillがある

420 名前:名無し~3.EXE mailto:sage [2007/12/15(土) 21:09:00 ID:dfEri7hZ]
XP Homeにもない。



421 名前:名無し~3.EXE [2007/12/15(土) 21:21:03 ID:Uqxi5nec]
OSはXP HOMEです・・・

サポートツールってMICROSOFTのサイトですか?


422 名前:名無し~3.EXE mailto:sage [2007/12/15(土) 21:28:37 ID:dfEri7hZ]
>>421
taskkill簡易版というのがある。
XP Professionalのtaskkillコマンドに似せた形式のコマンド。
ttp://www.vector.co.jp/soft/winnt/util/se401845.html

423 名前:名無し~3.EXE mailto:sage [2007/12/15(土) 21:34:47 ID:lBxshq29]
exitをSysExにして送信すればよい

424 名前:名無し~3.EXE mailto:sage [2007/12/15(土) 22:39:05 ID:5rIoihq9]
tskill/?

425 名前:名無し~3.EXE [2007/12/15(土) 23:11:01 ID:L+mv8qPX]
>>422
なるほど、こんなのあるんですね、ありがとうございました!!

426 名前:名無し~3.EXE mailto:sage [2007/12/16(日) 02:07:48 ID:4FMgTbfK]
>>424は無視ですかそうですか

427 名前:名無し~3.EXE mailto:sage [2007/12/17(月) 23:08:28 ID:BFIgzHr0]
2000 Support Toolsのkill.exeやtlist.exはMSからダウンロードできない?

428 名前:名無し~3.EXE mailto:sage [2007/12/19(水) 20:20:25 ID:AdtoV95K]
出来る

429 名前:名無し~3.EXE [2007/12/26(水) 00:33:00 ID:rbjdjGQz]
\aaaa\bbbb\

\aaaa\bbbb
のような最後の\だけ取ることってどうやれば出来ますか?


430 名前:名無し~3.EXE mailto:sage [2007/12/26(水) 00:47:37 ID:HdyjgLd3]
if %var:~-1% equ \ set var=%var:~0,-1%

だけどルート(C:\)の場合とかあるから、無条件にとるのは止めたほうがいいぞ。
どっちかというと逆に必ず\で終わるようにするロジックに変えたほうがいい。
if %var:~-1% neq \ (set var=%var%\)



431 名前:名無し~3.EXE mailto:sage [2007/12/26(水) 18:48:14 ID:Jz+7hx4Q]
しかし誘導厨とはウザいものだな

432 名前:名無し~3.EXE mailto:sage [2007/12/26(水) 19:00:57 ID:low3Iayr]
向こうのスレとの住みわけ範囲がよく分からない
何話したいんだろうな、向こうは
forとifのオプションの話しか出来ないような気も

433 名前:名無し~3.EXE mailto:sage [2007/12/26(水) 22:59:07 ID:RLSVoyeP]
んなこたぁ無い

住み分けとかじゃなく、単に捉え方の差だと思う
本来、両方で存在してても全く問題ないと思うんだが

434 名前:名無し~3.EXE mailto:sage [2007/12/26(水) 23:06:03 ID:low3Iayr]
うん、まぁ住民の大半が被ってるとは思うんだけど
外部コマンドに頼る、又は実用的なものはココ
文法的なこと、ロジカルな問題がアッチ、ってとらえ方であってる?

435 名前:名無し~3.EXE mailto:sage [2007/12/26(水) 23:10:01 ID:50mfR39P]
いや。
別に誘導する必要はまったく無い。
区分けも不要。
質問は各個撃破でおk

436 名前:名無し~3.EXE [2007/12/27(木) 11:03:08 ID:X9+WkMgT]
ごみ箱にファイルがあるかないかを聞きたいのですが
XPで隠しファイルを表示にしてもrecycleフォルダがありません。

レジストリから取得でもなんでもいいのですが
どうやったらいいのでしょうか。

437 名前:名無し~3.EXE mailto:sage [2007/12/27(木) 13:01:44 ID:2TeHSSTX]
ごみ箱を空にするバッチファイルとVBScript
ttp://www.vector.co.jp/soft/win95/util/se313491.html
が参考になるんじゃね?

438 名前:名無し~3.EXE [2007/12/27(木) 15:19:09 ID:X9+WkMgT]
>>437
ありがとうございます。

batファイルというかバッチコマンドだけというのは
無理そうですね・・・。

439 名前:名無し~3.EXE mailto:sage [2007/12/27(木) 18:27:49 ID:3yzeEI0b]
つぎ誘導されてきたらそのまま誘導し返そうか

440 名前:名無し~3.EXE mailto:sage [2007/12/27(木) 20:54:45 ID:poBRtKPI]
やめとけ。荒れるだけ



441 名前:名無し~3.EXE mailto:sage [2007/12/28(金) 01:19:39 ID:f9N/29cr]
基地害が誘導してきたものはそのまま誘導し返してok

442 名前:名無し~3.EXE mailto:sage [2007/12/28(金) 01:32:06 ID:yjdMHYge]
みんな、スルー力を高めようぜ

443 名前:名無し~3.EXE mailto:sage [2007/12/28(金) 07:44:57 ID:ElkJaKCc]
向こうってどのスレ?好奇心で覗きにいきたんだけど。

444 名前:名無し~3.EXE mailto:sage [2007/12/28(金) 10:13:04 ID:70uw9AsQ]
【.cmd】 バッチファイルスクリプト %2 【.bat】
ttp://pc11.2ch.net/test/read.cgi/tech/1197881068/

445 名前:名無し~3.EXE mailto:sage [2007/12/28(金) 16:31:06 ID:yjdMHYge]
どっちのスレで何聞いてもいいと思うんだが。

状況知らない人に説明すると、向こうのスレには基地外が
一人いて(こっちも見てるはず?)なんでもかんでも、こっちに
誘導しようとしている。


446 名前:名無し~3.EXE mailto:sage [2007/12/28(金) 21:45:28 ID:LlF9YfFL]
>>438
できるよ
pc11.2ch.net/test/read.cgi/tech/1197881068/75
みたいに

447 名前:名無し~3.EXE [2008/01/18(金) 23:20:48 ID:j9d+PS7f]
「ブリーフケース」を作ろうとしてレジストリで .bfc という拡張子のところの
ShellNewのCommandが

%SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\syncui.dll,Briefcase_Create %2!d! %1

であることから、次のようなコマンド

C:\WINDOWS\system32\rundll32.exe C:\WINDOWS\system32\syncui.dll,Briefcase_Create "D:\Tmp" ブリーフケース"

をコマンドプロンプトから入れてみましたが、メッセージなどは出ませんでしたが、
ブリーフケースは作成されませんでした。このコマンドラインをどのように修正すれ
ばいいでしょう?よろしくお願いします。

448 名前:名無し~3.EXE mailto:sage [2008/01/19(土) 00:38:57 ID:sSEzOzL6]
↑なんかデスクトップにブリーフケースが出来たよ

449 名前:名無し~3.EXE [2008/01/19(土) 08:24:46 ID:/uF4QVUs]
>>448
やってみてくださり、ありがとうございました。いまわたしも気がつきました。
確かにデスクトップにできてました。なんで D:\Tmp にできないのか・・・・・、
どこをどう直せばいいのでしょう??


450 名前:名無し~3.EXE mailto:sage [2008/01/19(土) 09:27:24 ID:qyNXQNI1]
C:\WINDOWS\system32\rundll32.exe C:\WINDOWS\system32\syncui.dll,Briefcase_Create 1 C:\Documents and Settings\user\デスクトップ\新規ブリーフケース



451 名前:名無し~3.EXE [2008/01/19(土) 09:54:47 ID:/uF4QVUs]
>>450
おお、この 1 が必要だったんですね!わかりました。ありがとうございました!!
 

452 名前:名無し~3.EXE mailto:sage [2008/01/20(日) 19:37:05 ID:WxOVD6GN]
パンツ入れかよ

453 名前:名無し~3.EXE mailto:sage [2008/01/20(日) 20:49:39 ID:KKGepza4]
>452
今の人はブリーフケース知らんかもな。
確かWin98辺りまではあったよ。そういう機能が。

454 名前:名無し~3.EXE mailto:sage [2008/01/20(日) 21:45:54 ID:/whP3Oqq]
95〜Vistaまで、すべて入ってるような気がするが・・・・

455 名前:名無し~3.EXE mailto:sage [2008/01/20(日) 22:27:18 ID:T0Gjpk8k]
俺は存在自体忘れてたがな

456 名前:名無し~3.EXE mailto:sage [2008/01/20(日) 23:58:23 ID:nLJrkLME]
名前は知ってるけど使い方は知らん

457 名前:名無し~3.EXE mailto:sage [2008/01/21(月) 01:01:11 ID:B/YHJUBh]
いつのまにかにclipなんてコマンドが加わってるんだね

458 名前:名無し~3.EXE mailto:sage [2008/01/21(月) 01:39:44 ID:fDwpgtYX]
>>453
いま西暦何年か言えますか?

459 名前:名無し~3.EXE mailto:sage [2008/01/21(月) 02:55:37 ID:Phaws+EF]
Win98以前は初期状態のデスクトップにブリーフケースが置かれていたんだよ。
2000になって置かれなくなった。
今でも新規作成から作ることはできるけど、98以降は影が薄くなったのは確か。


460 名前:名無し~3.EXE mailto:sage [2008/01/21(月) 08:24:29 ID:Gr9XxhBx]
昔、おじいさんがゲイツかなんかに
「わしは何年もつかっとるが未だにブリーフケースの使い道がワカランのじゃ」
みたいに言うジョークがあったな
探してみたけど見つからない、コピペじゃないのかな



461 名前:名無し~3.EXE mailto:sage [2008/01/25(金) 00:18:26 ID:8TpBX6Fi]
Vista で、Linux の su や sudo に当たるコマンドはありますか?
コマンドプロンプトで操作している時に、一時的に管理者としてコマンドを実行したいのですが…

462 名前:名無し~3.EXE mailto:sage [2008/01/25(金) 00:41:00 ID:Bm6HNp9A]
>>459
Vistaでも相変わらず作れるしな。誰も使わないのに。

463 名前:名無し~3.EXE mailto:sage [2008/01/25(金) 03:11:50 ID:u/EeCoz3]
>>461
runas

464 名前:名無し~3.EXE mailto:sage [2008/01/25(金) 19:52:16 ID:Bm6HNp9A]
>463
ありがとうございます。

でもこのコマンド、びみょ〜に使い勝手悪いなぁ…
利用して、自分好みにバッチ組んでみます。

465 名前:名無し~3.EXE [2008/01/28(月) 18:20:29 ID:a60OcUKA]
---
rem @echo off
rem Filename: inFiles.bat
rem ドラッグandドロップで 特定ファイルのディレクトリ-リストを 取得する 目論見.
DIR /N %~DP1%~NX1 >%~DP1dir-%~NX1.txt
---
これを 作業中フォルダに持ち込み 使用してます.
ドロップファイルなしでも 思惑通り 作業中フォルダ(バッチ本体があるので)
フォルダ全部のリストを取れる

ショートカット"inFiles.LIK"を作成し 作業中フォルダに持ち込み
ドロップファイルなしで 使うと バッチ本体がある場所のディレクトリを
バッチ本体がある場所に 作成する.

当然といえば 当然で "そういう仕様だ" と言われれば それまでなんですが
ショートカット使用でも
バッチ本体を置いた時 と同様の 動作をする方法って ありますか?

466 名前:名無し~3.EXE mailto:sage [2008/01/28(月) 18:32:38 ID:hAUaBHMX]
>>465
何がしたいのか、よくわからないんだけど、
具体的に、どんな場面で便利になるの?

467 名前:名無し~3.EXE mailto:sage [2008/01/28(月) 18:45:32 ID:saC0IqhL]
>これを 作業中フォルダに持ち込み 使用してます.
>ドロップファイルなしでも 思惑通り 作業中フォルダ(バッチ本体があるので)
>フォルダ全部のリストを取れる

そんなはずないけど

>ショートカット"inFiles.LIK"を作成し 作業中フォルダに持ち込み
>ドロップファイルなしで 使うと バッチ本体がある場所のディレクトリを
>バッチ本体がある場所に 作成する.

そんなはずないけど

なので

>ショートカット使用でも
>バッチ本体を置いた時 と同様の 動作をする方法って ありますか?

意味ない

468 名前:名無し~3.EXE [2008/01/28(月) 19:01:55 ID:a60OcUKA]
>>466
>具体的に、どんな場面で便利になるの?

ん......ン 別段 便利には なりませんねw
でも 実行ファイルの ショートカットが 本体と違う挙動を するのって 気になりません?
エラーを悪用してるから 大きなことは 云えませんがw



469 名前:名無し~3.EXE mailto:sage [2008/01/28(月) 21:33:41 ID:saC0IqhL]
>でも 実行ファイルの ショートカットが 本体と違う挙動を するのって 気になりません?

そんなはずないけど

470 名前:名無し~3.EXE mailto:sage [2008/01/28(月) 21:49:04 ID:F8A0PSQA]
98の質問してよかですか?

スクリプトを起動するバッチファイルがあります。
スクリプトはjavascriptで作ってあり、標準入力を扱いたいので、インタプリタはcscriptを使っております。
こんな、奴でつ
---------- hoge.bat start ----------
@echo off
cscript %Windir%\hogehoge.js //Nologo %1 %2 %3 %4
---------- hoge.bat end -----------

で、ですね。
これに標準入力からデータ渡すとなぜかインタプリタがwscriptに変わってしまいます。
こんな感じ。
c:>c:\windows\hoge.bat <input.txt
(このあと、hogehoge.jsがwscript経由で起動する)

原因をご存知の方いらっしゃるでしょうか。
ちなみに、この現象はwindows98の時のみ起き、windowsXPでは起こりません。




471 名前:名無し~3.EXE mailto:sage [2008/01/28(月) 21:56:33 ID:qpO8RM3B]
ショートカットの作業フォルダに%0

472 名前:名無し~3.EXE mailto:sage [2008/01/28(月) 22:00:27 ID:F8A0PSQA]
470です。
なんか、色々違ってました。スマン
---------- hoge.bat start ----------
@echo off
cscript //Nologo %Windir%\hogehoge.js %1 %2 %3 %4
---------- hoge.bat end -----------
こうだ。

そして、wscriptが起動すんじゃなくて
パラメタが渡っていないようだ。
c:>c:\windows\hoge.bat /a /b <input.txt
'/a' '/b'がhogehoge.jsに届いていない。

バッチファイルの中でechoすると渡ってる風なんだけどなぁ。

473 名前:名無し~3.EXE mailto:sage [2008/01/29(火) 01:07:24 ID:HWw+z0EO]
pc11.2ch.net/test/read.cgi/tech/1197881068/158

474 名前:名無し~3.EXE mailto:sage [2008/01/29(火) 16:44:24 ID:HWw+z0EO]
command /c c:\windows\hoge.bat /a /b <input.txt


475 名前:名無し~3.EXE [2008/01/30(水) 16:21:48 ID:KYI6wfbS]
スレ違いかも知れませんが、コマンドプロンプトで無線LANの再設定?について詳しい方いませんか?

476 名前:名無し~3.EXE mailto:sage [2008/01/30(水) 17:57:54 ID:Ho6Pm+4w]
>>475
ipconfig /renew とかの話?
無線パラメータの設定をコマンドラインでできるアダプタなんてあるのか?

477 名前:名無し~3.EXE [2008/01/30(水) 20:01:10 ID:KYI6wfbS]
>>476
詳しくないんで何ともなんですけど、先月無線LANでPCを使用していた時ブレーカーが落ちて、ルーターの電源が切れて無線LANが使えなくなったんです。
それで色々試せど復帰しなくて、プロバイダーのサポセンに電話したんですけど長々と待たされて、繋がると私が色々試した事を2〜3回再度させられて、結局コマンドプロンプトで一度通信をリセットする?プログラムを指示してもらって復帰したんです。
でも先週また同じトラブルがあって、またサポセンに電話するのも億劫で・・・と言う感じです。

長文すみません。

478 名前:名無し~3.EXE mailto:sage [2008/01/30(水) 20:15:41 ID:yq8XtZP7]
質問です
コマンドプロンプトのrename(ren)で
aaa123.txt
bbb123.txt
ccc123.txt
の三つのファイルを
123を変えないまま
xxx123.txt
yyy123.txt
zzz123.txt
一度で変更するにはどう打てばいいでしょうか?


479 名前:名無し~3.EXE mailto:sage [2008/01/30(水) 20:50:24 ID:w7DIOj03]
ren aaa123.txt xxx123.txt|ren bbb123.txt yyy123.txt|ren ccc123.txt zzz123.txt


480 名前:名無し~3.EXE mailto:sage [2008/01/31(木) 01:03:19 ID:eBoblFAp]
>>477
初心者スレ池



481 名前:名無し~3.EXE [2008/01/31(木) 10:58:16 ID:Zu1cJ4hG]
>>480
わかりました、すみません

482 名前:名無し~3.EXE mailto:sage [2008/01/31(木) 19:06:40 ID:CwN/BF0B]
>>474
遅レスすまそ。
command /c で出来た。アリガトン

command.comが関係しとるとは思わなんだ。
NT系列では必要の無い操作だから
wowの仕様が微妙に違うんだな。
勉強になったよ。

483 名前:名無し~3.EXE mailto:sage [2008/02/01(金) 01:45:58 ID:zNm7t6Hy]
9xなら JS2COM 使えば?

484 名前:名無し~3.EXE mailto:sage [2008/02/01(金) 21:38:02 ID:uYx0CpkT]
>>483
ウホッ。こりゃ便利。
アリガトン

485 名前:名無し~3.EXE [2008/02/07(木) 01:18:24 ID:JJWunJvn]
1つの親フォルダの中に数百個のファイルと、
それと同名のフォルダの組が並列に入っています。
これらのファイルを、その同名のフォルダに移動するには
どうしたらよいでしょうか?
aaa.txt bbb.txt ccc.txt ..... aaa.folder bbb.folder ccc.folder.....
がありaaa.txtをaaa.folderの中へ
bbb.txtをbbb.folderの中へという感じで全て移動したいんです。

あと関係ないんですけど
mklink /Dとmklink /Jは何が違うんですか?

486 名前:名無し~3.EXE mailto:sage [2008/02/07(木) 09:48:44 ID:i1Y+9IDF]
for/?

487 名前:名無し~3.EXE mailto:sage [2008/02/07(木) 19:35:04 ID:JJWunJvn]
>>486
ありがとうございます!できました!

488 名前:名無し~3.EXE mailto:sage [2008/02/16(土) 15:23:13 ID:bHZJ+HSt]
バッチファイルを作ってそれに対象のファイルをD&Dすることで作業を半自動化しています。
でっすが困ったことにバッチファイルの中に%1を記述して、そこにD&Dしたファイルへの
絶対パスを格納しようとしてもその中に全角スペースがあると正常に動作しないのです。例えば
C:\temp\aabbcc.txt
みたいなファイルをD&Dする分には問題ないのですが
C:\temp\aa bb cc.txt
みたいなファイルをD&DするとC:\temp\aaまでが第一引数
そのあとのbbとcc.txtはそれぞれ第二、第三引数として扱われてしまうのです。
コマンドプロンプトに直接記述したときは間に全角スペースがあっても全体で一つのパスとして
扱われますし、バッチファイル内の記述するときに引数を""で囲んでも解決しませんでした。
どうすればよろしいでしょうか?

489 名前:名無し~3.EXE mailto:sage [2008/02/16(土) 17:23:01 ID:gHdxG/Ym]
うそだろ、そんなわけない

490 名前:名無し~3.EXE mailto:sage [2008/02/16(土) 17:41:52 ID:gHdxG/Ym]
ごめん、ほんとだ。ドロップハンドラの障害だから、
VBSFileのドロップハンドラをbatfileに指定してやればいいよ。



491 名前:名無し~3.EXE mailto:sage [2008/02/16(土) 17:45:29 ID:bHZJ+HSt]
>>489
自分もそう思いたいところなんですが・・・

@echo off
echo %1
echo %~1
echo "%1"
pause

試しに上記の内容の.batファイルを作ってそこに前述の
C:\temp\aa bb cc.txtをD&Dしてみたところ、表示結果が

C:\temp\aa
C:\temp\aa
"C:\temp\aa"
続行するには何かキーを押してください . . .

でした、友人にもお願いして試してみてもらったところ同じ状況みたいです@XP SP2

492 名前:名無し~3.EXE mailto:sage [2008/02/16(土) 18:29:02 ID:bHZJ+HSt]
>>490
入れ違いになってしまいましたが、ありがとうございます。
これは一種のバグ・・・でいいんでしょうか?
問題は自分がVBSのことが全くわからないことですね orz

493 名前:名無し~3.EXE mailto:sage [2008/02/16(土) 19:00:54 ID:gHdxG/Ym]
>問題は自分がVBSのことが全くわからないことですね orz
VBSはかんけーねー
VBSFileのドロップハンドラを借用するだけ

あるいは、回避策
c:\tempをc:\temp folderにすれば?


494 名前:名無し~3.EXE mailto:sage [2008/02/16(土) 19:58:43 ID:gHdxG/Ym]
ドロップハンドラはかんけーねーみたい
cmd.exeの引数分離の障害仕様だね

495 名前:名無し~3.EXE mailto:sage [2008/02/16(土) 20:13:55 ID:bHZJ+HSt]
>>493-494
どうもありがとうございます。ドロップパンドラはググっても理解できません
でしたが、これで踏ん切りがついたので回避策を使うことにします。

仕様か、なんて全てを包み込むような包容力のある言葉なんd(ry

496 名前:名無し~3.EXE mailto:sage [2008/02/28(木) 23:52:46 ID:hFNRGAEX]
Vistaのコマンドプロンプトに以前のようにファイルをドロップしたいのですが
ウラワザとかありませんか?

497 名前:名無し~3.EXE mailto:sage [2008/02/29(金) 00:32:17 ID:le6aVPk+]
ttp://support.microsoft.com/kb/929457

498 名前:名無し~3.EXE mailto:sage [2008/02/29(金) 00:41:18 ID:fnZx8Tum]
>>497
具体的にどのセキュリティ強化が原因で使えなくなってるかわかりますか?

「指が滑った時」対策だったら泣ける。

499 名前:名無し~3.EXE mailto:sage [2008/02/29(金) 01:41:43 ID:MYE21105]
てかそんなこと出来たのか。

500 名前:名無し~3.EXE mailto:sage [2008/03/01(土) 21:32:02 ID:2GYI1cga]
無線LANをつかっているのですがしょっちゅう回線が切れるので困ってます。
ネットワークの修復をするとつながるようになるので、
>>217を参考に以下の修復バッチファイルを作ったのですが、
これをファイル出力させずに行うことはできますか?

---IP_recovery.bat-----------------------
ping 192.168.11.1 -n 1 > C:\b.txt
for /f "SKIP=3" %%A in (C:\b.txt) do if %%A NEQ Destination (echo %%A) else (
shut
ping localhost -n 5
connect
ping localhost -n 15
ipconfig /release
ipconfig /renew
arp -d *
nbtstat -R
nbtstat -RR
ipconfig /flushdns
ipconfig /registerdns)
del C:\b.txt
--------------------------------------




501 名前:名無し~3.EXE mailto:sage [2008/03/01(土) 21:32:41 ID:2GYI1cga]
回線が切れている時のb.txt---------------


Pinging 192.168.11.1 with 32 bytes of data:



Destination host unreachable.



Ping statistics for 192.168.11.1:

Packets: Sent = 5, Received = 0, Lost = 5 (100% loss),


--------------------------------------


502 名前:名無し~3.EXE mailto:sage [2008/03/01(土) 21:52:32 ID:INNPJ5X6]
XPならErrorLevelで。

503 名前:名無し~3.EXE mailto:sage [2008/03/01(土) 23:48:41 ID:kJ7OZr7A]
for /f "SKIP=3" %%A in ('ping 192.168.11.1 -n 1 ') do if %%A NEQ Destination (echo %%A) else (


504 名前:500 mailto:sage [2008/03/02(日) 01:54:27 ID:W3Xs2/Nf]
>>502-503
思ったように動かすことができました。
ありがとうございます。

情報を元にネットで調べて、上2行を以下に変えたら動作がすっきりしました。
ping 192.168.11.1 -n 1 | find "Destination host unreachable"
IF ERRORLEVEL 1 GOTO eine
IF ERRORLEVEL 0 GOTO Nutteloos


505 名前:名無し~3.EXE [2008/03/03(月) 22:32:53 ID:uMn3e7q3]
質問があります。
set n=1
set a%n%=5

とするとa1という変数に5を代入できますよね?

でもif文でa%n%と値を比較しようとすると上手くいきません

ifで比較する前に
set /a hikaku=a%n%
とやって
if %hikaku%==5 echo sex

これは通るのですが
何か馬鹿っぽいですが他によい方法はありませんか?
/iオプションを試してみてもうまくいきません…

506 名前:名無し~3.EXE mailto:sage [2008/03/03(月) 23:03:40 ID:criNZiK5]
つ 遅延環境変数

507 名前:名無し~3.EXE mailto:sage [2008/03/04(火) 00:32:51 ID:JYsrlTMe]
できました。感動です
理屈はよくわからないですが大括弧小括弧みたいなイメージでいいんですか

とりあえずバッチでオセロ作るのを目標にがんばっています

508 名前:名無し~3.EXE mailto:sage [2008/03/04(火) 00:36:48 ID:Xq8J3uel]
つ遅延展開

509 名前:名無し~3.EXE mailto:sage [2008/03/04(火) 00:39:21 ID:VMDLSFIe]
>>507
> 大括弧小括弧みたいなイメージ

全然違う。
即時展開される変数は、バッチファイルを読み込んだ時点で置換されてるので
実行時は変数ではなく定数になっている。

510 名前:名無し~3.EXE mailto:sage [2008/03/04(火) 00:57:01 ID:JYsrlTMe]
ん〜

たとえばA%n%という抽象的な変数に
具体的にn=1,2,3…
と繰り返し値を与えて
A1,A2,A3…という変数は作れるし
それぞれに値もセットできます。遅延設定なしで。

なのでバッチを読み込んだ時点で云々というのは腑に落ちないんですが。



511 名前:名無し~3.EXE mailto:sage [2008/03/04(火) 01:03:31 ID:/r2l60M6]
1行実行するごとにバッチファイルを読み込みなおしてるんだよ。
だから自己書き換え型のbatも作れる。

512 名前:名無し~3.EXE mailto:sage [2008/03/04(火) 04:36:25 ID:Xq8J3uel]
遅延展開を使わずに
if A%n%==6 echo six
てできるか?

513 名前:名無し~3.EXE [2008/03/04(火) 10:52:48 ID:oHAbhod6]
お札の都市伝説発見!


upload.wikimedia.org/wikipedia/commons/7/76/P103-2000Yen-%282000%29_front.jpg

画像が表示されたら右クリック、Iを押す→Pを押す

514 名前:名無し~3.EXE mailto:sage [2008/03/04(火) 17:21:53 ID:JYzbQmWK]
しへいのいんさつははんざいですよ

515 名前:名無し~3.EXE mailto:sage [2008/03/04(火) 17:44:24 ID:r5xViyTY]
普通に印刷できちゃったんだけど

516 名前:名無し~3.EXE mailto:sage [2008/03/04(火) 17:49:28 ID:DEYMSbAn]
>>513
すばらしい。新種のソーシャルウイルスだな

517 名前:名無し~3.EXE mailto:sage [2008/03/05(水) 04:23:16 ID:OmO7J7IA]
できるのとやってはいけないのは別・・・

コピー機やオフセット印刷機はプロテクトがあって出来ないらしいけど。

518 名前:名無し~3.EXE [2008/03/08(土) 13:02:22 ID:t1Hf5Bsj]
コマンドプロンプトで押したキーをそのまま取得する方法はないですよね?
PAUSEで押したキーを変数にセットするような。

519 名前:名無し~3.EXE mailto:sage [2008/03/08(土) 13:31:31 ID:ghC3PRgD]
set /p AAA=なんか入力

520 名前:名無し~3.EXE mailto:sage [2008/03/08(土) 15:53:09 ID:qQq+YK5u]
通りすがりです。
set にオプションあったのかあ。勉強になりました。



521 名前:名無し~3.EXE mailto:sage [2008/03/08(土) 18:00:16 ID:t1Hf5Bsj]
すいません

set /p オプションは当然ながら使い倒しているわけですが

毎回エンター押さないといけないじゃないですか?

PAUSEはエンター押さなくても先に進むから
PAUSEで(なくても良いが)押したキーを取得する方法があるのかなってことです

でもなさげですね

522 名前:名無し~3.EXE mailto:sage [2008/03/08(土) 18:37:48 ID:TBGhFK6F]
choice.exeを使え

523 名前:名無し~3.EXE mailto:sage [2008/03/12(水) 13:53:29 ID:EvP5WuBC]
>>517 線画で肖像とかがあったりすると誤認することがあるらしいな

524 名前:名無し~3.EXE [2008/03/12(水) 20:36:34 ID:ea+zIKS9]
すごく初歩的な質問なのですが

set wao=wa o

if %wao%==%wao% echo wao

って設定するとスペースが邪魔をしてエラーになりますが
この手のエラーを出さないための方針としては
何が一番良いんでしょうか。
スペースを""ではさむと回避できるのですが
根本的な解決になっていないような気がして…

525 名前:名無し~3.EXE mailto:sage [2008/03/12(水) 22:16:39 ID:ujpaACV/]
>>513
何が起きるの?
プリンタないから確認できん。

526 名前:名無し~3.EXE mailto:sage [2008/03/12(水) 22:24:33 ID:wj+st/27]
>>525
ご飯が一日3度、定期的に出ます

527 名前:名無し~3.EXE mailto:sage [2008/03/13(木) 00:17:06 ID:0XIdaW4C]
set wao=wa^ o
if "%wao%"=="%wao%" echo wao

528 名前:名無し~3.EXE mailto:sage [2008/03/13(木) 00:24:53 ID:eYgnqYL9]
>527
ありがとうございます…
これでまた頑張れます

529 名前:名無し~3.EXE mailto:sage [2008/03/13(木) 02:09:43 ID:xekHwBEI]
setlocal enabledelayedexpansion
set wao=wa o
if !wao!==!wao! echo wao


530 名前:名無し~3.EXE mailto:sage [2008/03/14(金) 21:41:09 ID:Fj5KIEt7]
パイプで渡された文字列を環境変数にSETするバッチを書くことって可能?
ECHO HOGE | XSET.BAT で%XSET%にHOGEが入るような。
もしくはそういう補助ツールってあります?ぐぐっても見つからんかった。

結構よくやる処理なので、手軽に使えるようにコマンド化できればな、と。




531 名前:名無し~3.EXE mailto:sage [2008/03/14(金) 22:12:27 ID:k/rPIO78]
for /f %%x in ('more') do set xset=%%x



532 名前:名無し~3.EXE mailto:sage [2008/03/14(金) 23:00:50 ID:Fj5KIEt7]
>531
ありがとう。
試しにCMD.EXEからECHO HOGE | XSET.BATをやってみたところ
SET XSET=HOGEは実行されるけど、バッチから戻ってくるときに
%XSET%の内容が消去(初期化?)されちゃってるみたいで
ECHO %XSET%しても%XSET%と表示される。

単にSET=HOGEとだけ書いたバッチをCMD.EXE上から実行した場合は
戻ってきても保持されてるんだけど。

なんでだ??
よう分からん…。


533 名前:名無し~3.EXE mailto:sage [2008/03/14(金) 23:15:53 ID:k/rPIO78]
パイプの前後はそれぞれ子プロセスで実行される

534 名前:名無し~3.EXE mailto:sage [2008/03/14(金) 23:24:24 ID:k/rPIO78]
for /f %%x in ('ECHO HOGE') do set xset=%%x


535 名前:名無し~3.EXE mailto:sage [2008/03/14(金) 23:42:36 ID:Fj5KIEt7]
>533
つまりバッチで>530を実現するのは無理ってことですか?

>534
530が出来ればバッチの中でそれやらなくても良いのにな
ってのがスタートだったので。

536 名前:名無し~3.EXE mailto:sage [2008/03/15(土) 03:52:41 ID:1v13GlOD]
>もしくはそういう補助ツールってあります?ぐぐっても見つからんかった。

それは子プロセスで実行される

537 名前:名無し~3.EXE mailto:sage [2008/03/15(土) 19:03:43 ID:/rgREz5R]
すいません、行き詰ってしまったので助けてください。ワイルドカードを使って
指定ディレクトリ以下から条件に合致したファイル名を選び出し、それを
環境変数にセットするという方法まではわかりました。
例)
for /f "delims=" %%A in ('dir /b "C:\temp\test AAC PID * DELAY *ms.aac"') do (
    set aac_audio_source="C:\temp\%%A"
)

これを一歩進めて、ディレクトリから選び出したファイル名の中のさらに
一部分の文字列だけを選び出して環境変数にセットしたいのです。
具体的には上記の例のうち二番目のワイルドカード、msの直前にくる文字列です。
この部分はDGIndexという動画関係ソフトによって出力されたファイルのうち、音声のファイルが
映像に対してどれだけの遅延をしているかを示しているものなのですが
当然DGIndexの処理が完了するまでこの値はわかりません。
(それなりに時間がかかるのでバッチの最初の段階で処理させ、その後上記のディレクトリ検索を行う)
実際に出力されたファイルの当該箇所には三桁以下の半角英数が書かれています、加えて
その数字の前には"-"(マイナス半角)がついているケースとそうでないケースがあります。
例)  -254 112
ただし半角二桁の数字は見たことがあるのですが、半角一桁や逆に半角四桁以上
が実際にファイルに書き加えられることがあるのかは未確認のためわかりません。
こうのような操作はバッチファイルで完結することは可能でしょうか?

538 名前:名無し~3.EXE mailto:sage [2008/03/15(土) 19:13:01 ID:/rgREz5R]
書き忘れましたが・・・もしDGIndexに"test"という名前のファイルを入力した場合
それによって出力されるのが上で例に挙げたファイル名の"test AAC PID * DELAY *ms.aac"です。
つまり"AAC PID * DELAY *ms.aac"の部分がDGIndexによって元のファイル名に追加される
部分であり、ここはワイルドカードで代替している箇所を除けば固定です。

539 名前:名無し~3.EXE mailto:sage [2008/03/15(土) 20:29:29 ID:1v13GlOD]
set/?

540 名前:名無し~3.EXE mailto:sage [2008/03/17(月) 19:17:48 ID:4TC48wem]
>>538
"delims="とは区切りなしで「test AAC PID * DELAY *ms.aac」全部を%Aに入れることを意味する。
バラバラで入れたければ区切り文字を設定してトークンで必要なものだけ取り出す。
for /? をちゃんと読むべし。



541 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 01:44:51 ID:ZfuqeoxK]
すいません、非常-に遅くなりましたが>>537-538です。

>>539-540
目を通してみたのですが、delims=で扱えるのは単一の文字だけですよね。
文字列が扱えるのであればDELAY とms.aacを指定してtoken=2とかに
してやればよさそうですが、なにぶんファイル名が変動するのでそうもいかないようです。
じゃぁsetの方で制御しようと考えた場合、DELAY とms.aacの間の文字数が
固定であれば%PATH:~-10%のような後ろから文字数をカウントしていって
抜き出し、さらにもう一度その抜き出した文字列を%PATH:~0,4%のように頭から
カウントして抜きだせばいいのですが、前述のようにこの抜き出したい文字列は
場合によって多少文字数が変動します。
理想を言えば、「"DELAY "と"ms.aac"の間に挟まれた文字列」という条件で
抜き出せるのが一番いいのですけれども・・・

542 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 02:09:01 ID:vljTMuMh]
>>541
1文字ずつ切り出して比較すりゃいいじゃん。

543 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 02:59:37 ID:TH4V7lbY]
要点を2行くらいで言えない?

544 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 05:21:26 ID:N1GwNiEt]
"test AAC PID * DELAY *ms.aac"(testと*は変動)から
*(-を含む数字,桁数変動)を抜き出して環境変数にsetしたい。


545 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 05:26:18 ID:N1GwNiEt]
>539な気がする。

546 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 08:46:33 ID:YOGH1HJm]
*内にmが無いならスペースとmを区切り文字にして4番と6番をゲットすればいい。

547 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 09:28:52 ID:sC923knp]
testが空白やmを含まないとは限らないと思うよ。

>537で"test AAC PID * DELAY *ms.aac"は既に
%aac_audio_source%に取得できてるわけだから

set aac_audio_source=%aac_audio_source:*DELAY =%
set aac_audio_source=%aac_audio_source:ms.aac=%

とかやって削ること考えた方が良いんじゃないかな。
これもtestがDELAY を含んでたらアウトだけど。


548 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 10:16:11 ID:YOGH1HJm]
こういうのはWSH使って正規表現で一発でやりゃいいのによ。

549 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 13:38:49 ID:TH4V7lbY]
これにて一件落着

550 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 20:02:59 ID:ZfuqeoxK]
いろいろとレスありがとうございます、要点としては>>544>>547の通りです。

>>547氏の方法は良さそうですね。testの部分は実際の運用では録画の
番組名になるのでWin上でファイル名に使える文字は何でも入る可能性が
ありますが、DELAYが番組名に使われることはまず無いので問題ないんでしょう。
自分も*に入るのが4文字以下だと仮定して
set aac_audio_source=%aac_audio_source:~-14%
としたあと"tokens=2 delims=m "という方法も考えましたが>>547の方が明らかにスマートでした

>>548-549
もうバッチで一千行以上書いてしまったので今更後には引けないというw



551 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 20:07:48 ID:TH4V7lbY]
>もうバッチで一千行以上書いてしまったので今更後には引けないというw

逆だな。バッチで一千行以上も書くようなら、やめたほうがいいな。

552 名前:名無し~3.EXE mailto:sage [2008/03/20(木) 21:27:38 ID:YOGH1HJm]
俺もWSHなりで書き直した方がいいと思うぞ。千行が百行になったりしてな。

…さすがにそれはないか?
数百にはなりそうだが。

553 名前:名無し~3.EXE mailto:sage [2008/03/21(金) 01:36:37 ID:undob5I3]
>544で2行でまとめられる内容を>537-538に渡って延々と
書き続けてるくらいだからバッチでも数百行にできるんじゃねーの?w


554 名前:名無し~3.EXE mailto:sage [2008/03/21(金) 01:38:20 ID:AMlsUloI]
情報小出しにされるより一千倍マシ

555 名前:名無し~3.EXE mailto:sage [2008/03/21(金) 03:56:18 ID:shXKIS+x]
具体的に何がしたいか?を書けば話題に飢えたこのスレの住人なら自分で作りそうな。

556 名前:名無し~3.EXE mailto:sage [2008/03/21(金) 14:08:15 ID:1ACbc417]
>具体的に何がしたいか?を書けば

って何千行にもなりそうな

557 名前:名無し~3.EXE mailto:sage [2008/03/22(土) 01:00:18 ID:gZSy0T3O]
可愛い女の子とセクースしたいが自分じゃ無理だ

558 名前:名無し~3.EXE mailto:sage [2008/03/24(月) 02:50:55 ID:P1cfgm/y]
bashでゆうとこの、`cmd 〜〜` に値するコマンド若しくは表記のしかたはありますか?


bash # rm -f `cat /var/tmp/delete_files.txt` --> delete_filesに記載されているfileをまとめて削除。

いや、別にこれは例えでなんで特に意味がありませんが、
やりたいことは、二つ目の(``に囲まれた)cmdの戻り値を、一つ目のコマンドに引数として渡したいです。

559 名前:名無し~3.EXE mailto:sage [2008/03/24(月) 02:52:27 ID:8aWQMqjf]
そのうち900行はコメントだったりして

560 名前:名無し~3.EXE mailto:sage [2008/03/24(月) 03:02:58 ID:PDxz0orZ]
>558
for /?

過去ログに山ほど例が載ってる。



561 名前:名無し~3.EXE [2008/03/24(月) 04:01:30 ID:P1cfgm/y]
>>560
ありがとうございます。一応希望のことはできました。
戻り値が一つでも、FORループ使わないといけないんですね。

話は変わりますが、cmd.exeで、Unixのシグナル `kill 〜`に相当するcmdは、
’taskkill’以外には無いんでしょうか?
ググってみたり、msnってみたりしたんですが、「Win32APIはシグナルを提供してない」
みたいな記述を見つけたんですが・・・。
それでも、サービスに登録されているbackgrundなサーバーアプリを
net stop 〜 で終了シグナルを送ってるんで、できそうなんですが・・。

562 名前:名無し~3.EXE mailto:sage [2008/03/24(月) 07:10:08 ID:L0lX/0q/]
1つ答えると、また別の質問をする、厨の典型的パターンだな
情報小出しにするなよ。WMIでも使っとけ。

563 名前:名無し~3.EXE [2008/03/24(月) 14:21:07 ID:WUdOBBSC]
XP-Homeで起動コマンドを利用したいのですがうまく動作しません。
以下のどちらもやりましたがまったく何も起こりませんでした。
Homeでは利用出来ないコマンドなんでしょうか?

start ×××.exe
start "C:\Program Files\×××\×××.exe"

564 名前:名無し~3.EXE [2008/03/24(月) 14:53:08 ID:WUdOBBSC]
書き忘れてましたので追加します。
EXEファイルのあるフォルダ内にバッチファイルを置いてクリックすると起動します。
でもデスクトップに置いてクリックするとダメなようです。
一つだけでなく複数のEXEファイルを起動したいのですが、どのように書けば良いのでしょうか?

565 名前:名無し~3.EXE mailto:sage [2008/03/24(月) 15:09:10 ID:0QXfngW0]
>>563
start /?
特に、""で囲った1つ目が何を意味することになるか良く考えること。

566 名前:名無し~3.EXE mailto:sage [2008/03/24(月) 15:10:02 ID:mqeigdTH]
>563
前者は、カレントディレクトリかパスの通ったディレクトリに×××.exeが無いと動かない。

後者はタイトルと認識されてしまうので

start "" "C:\〜\×××.exe"

と書いた方が良さげ。

567 名前:名無し~3.EXE mailto:sage [2008/03/24(月) 15:10:06 ID:qluytLNu]
start/?

568 名前:563 [2008/03/24(月) 18:27:25 ID:GUB5eIlQ]
>>565-567
うまく起動しました。
本当にありがとうございました。
やっぱこっちで聞いたのは正解でした。m(_ _)m

569 名前:名無し~3.EXE mailto:sage [2008/03/25(火) 00:39:16 ID:XIhyPtz1]
>568
それ、向こうの普通の住人に軽く失礼だよ。

570 名前:名無し~3.EXE mailto:sage [2008/03/25(火) 10:19:16 ID:KGCFsKLj]
>>569
あそこのスレ覗いてみたら、酷いからw
まあ言われて当然だけどな



571 名前:名無し~3.EXE mailto:sage [2008/03/25(火) 11:42:47 ID:ivCYVsqO]
で、そのスレとはどこ?

572 名前:名無し~3.EXE mailto:sage [2008/03/25(火) 11:44:47 ID:GVezYnPG]
あそこはリアル精神障害者の粘着がいて
なんでもかんでもここに誘導しようとするのな

573 名前:名無し~3.EXE mailto:sage [2008/03/25(火) 11:54:02 ID:1y11T6/h]
>>571
スレっていうか板だけどな。
ム板バッチファイルスレ。

574 名前:名無し~3.EXE mailto:sage [2008/03/25(火) 19:01:19 ID:+d3VDJbp]
好きでキチガイの相手してるワケじゃないんだがなぁ…。
バッチ以外の話は一切誘導しないのに、バッチの話が始まると
必ず、パソコンの使い方はWin板のコマンドスレへ、と誘導する。

575 名前:名無し~3.EXE mailto:sage [2008/03/26(水) 13:18:41 ID:gE4+Tmq6]
>>561
net stopが裏でやっていることとUnixシグナルの仕組みは別物。

576 名前:名無し~3.EXE mailto:sage [2008/03/28(金) 12:02:59 ID:lhYUJs3e]
XP SP2 の call で exe も何でも実行できるのは仕様ですか?
2000でも同じかな…

577 名前:名無し~3.EXE [2008/03/28(金) 20:48:29 ID:+6KAMnBD]
使用OSはXPのSP2なのですが、デスクトップヒープを見たいと思い、
Desktop Heap Monitorを使用しようとしたのですが、インストールには成功しても
以下のようにドライバを読み込めなかったりなど行き詰ってしまいました…
どうすれば解決できるのかどうかよろしくお願いいたします…
ttp://sund1.sakura.ne.jp/uploader/source/up21168.jpg
ttp://sund1.sakura.ne.jp/uploader/source/up21169.jpg
ttp://sund1.sakura.ne.jp/uploader/source/up21170.jpg


578 名前:名無し~3.EXE mailto:sage [2008/03/29(土) 01:08:36 ID:cjLqnGDe]
exe は実行できるが、何でも実行できるわけないだろ

579 名前:名無し~3.EXE [2008/03/29(土) 02:13:39 ID:DDcV0gzf]
「何でも」にも限度はあると思うが、
”関連付け”されたファイルなら、それこそ「何でも」実行できる。
たとえば、txt ファイルはメモ帳や他のエディタに関連付けされてるから、
下記のコードも問題なく実行できる。
------------
call unko.txt
------------
さらに、↓でもOK。
------------
unko.txt
------------

580 名前:名無し~3.EXE mailto:sage [2008/03/29(土) 02:32:04 ID:cjLqnGDe]
それは
xxxで実行できるものはほぼcall xxxで実行できる




581 名前:名無し~3.EXE mailto:sage [2008/03/29(土) 17:57:31 ID:e7BCQMf+]
call って start みたいなものなんだなって思ったんですが、
むしろ cmd /c と等価と考えればいいのかな。
start は cmd /k ですか。


582 名前:名無し~3.EXE mailto:sage [2008/03/29(土) 18:04:25 ID:cjLqnGDe]
そういう妄想は無意味だ
所詮にてるところもあればちがうところもある

583 名前:名無し~3.EXE mailto:sage [2008/03/29(土) 18:20:32 ID:e7BCQMf+]
まあそうなんですが、そう考えると分かりやすいので…

明らかに違うのは、 cmd /c だと当然のように cmd.exe がもう一つ
実行されることですね。これは環境変数に影響しますね。
ほかにも違いはあるのかな。

584 名前:名無し~3.EXE mailto:sage [2008/03/29(土) 18:27:52 ID:cjLqnGDe]
call notepad.exe
cmd/c notepad.exe
だけみれば
call≒start
cmd/c≒start/w
になるし意味ないだろ?

585 名前:名無し~3.EXE mailto:sage [2008/03/29(土) 18:51:15 ID:e7BCQMf+]
なるほど。そういう動きしますね。
確かに「等価」なんて書くのは乱暴でした。

hoge.cmd がある環境と hoge.exe がある環境があって、
これを呼び出すバッチを両方の環境で共通にしたいと
思っていたのですが、call dir とか何気なく実行して
みたら思いがけず結果がでてきて>>576を書きました。

幸いexeはコンソールアプリケーションだったのでcallで
バッチもexeも実行できそうなんですが、そうでなかったら
やっぱり切り分けする必要がありそうですね。

いろいろ知識が増えました。ありがとうございます。

586 名前:名無し~3.EXE mailto:sage [2008/04/04(金) 16:11:15 ID:c0lFiKIy]
ちょっと先生方にお力を
(↓サンプル)
FOR %i IN (*.txt) DO @echo %i 
で.txtをひらい出そうとすると
test.txt
testtest.txt
test.txttest    ←
test.txttxt     ←
test.txtAAAAAA ←
余分なものもひらってしまいます
*.txt*やってるわけじゃないのにコマンドプロンプトはどういう理屈で上のものをひらうでしょうか
.txtで終わってるテキストだけ正しく抽出するにはどうやったら
出来たら上のFORをベースに改良する方法でお願いします
現在FORで組んでしまってるので根本的に別方法はまずいので 

587 名前:名無し~3.EXE mailto:sage [2008/04/04(金) 16:31:21 ID:O5RX4LBM]
FOR %i IN (*.txt) DO @if %~xi==.txt echo %i

588 名前:名無し~3.EXE mailto:sage [2008/04/04(金) 18:42:54 ID:HotDOmeE]
>>586
今気づいたけど dir も同じよくわからん仕様
dir *.txt → 586の全部
dir *.txtt → 該当無し
dir *.txttxt → test.txttxt
dir *.tx → 該当無し

拡張子が3文字の時に限り後に何が付いていても全部表示する謎仕様。
さらに、*.txt* だと名前順だが、 *.txt だとベースは名前順だがtxt以降に
文字があるファイルはエントリ順になる超謎仕様。

さすがMS。

589 名前:名無し~3.EXE mailto:sage [2008/04/04(金) 18:49:16 ID:O5RX4LBM]
謎なものか
dir /x してみ

590 名前:名無し~3.EXE mailto:sage [2008/04/04(金) 19:14:07 ID:c0lFiKIy]
>>587-589
出来ました

こういう仕様になってるのには何か深い理由がありそうですね。
こういう事情を知らずに各種ソフトの.iniファイルを別のものに一時交換するときに
.iniAAAAA とかを多用しているので困っていました
どうもありがとうございました



591 名前:590 mailto:sage [2008/04/04(金) 19:43:54 ID:c0lFiKIy]
わあああ、ちょっと実験したら今まで信じてきたやつも全部アウトか
*.txtAAAとかあればそれも全部混ざってコピーされてしまう
なんで気がつかなかったんだろう。反省しろよ俺
無知は恐ろしいと実感反省した4月4日をMyコマンド記念日としよう

par1よりこれも全部アウト
「888 名前:名無し~3.EXE 投稿日:02/01/20(日) 13:05
>>884
@echo off
for %%i in (*.txt) do type %%i >> new.txt

これをバッチファイルとして保存してダブルクリックしろ。
全てのテキストファイルが連結されて、
new.txtというファイルが作られる。

889 名前:名無し~3.EXE 投稿日:02/01/20(日) 13:21
それだけなら copy *.txt new.txt でいいでしょ。」

たぶん中上級者の方々には既知の話だったんでしょうね
スレ汚しスマソ


592 名前:名無し~3.EXE mailto:sage [2008/04/04(金) 20:15:21 ID:7OrQUO4u]
8.3名の生成機能、もういい加減デフォルトOffにすべきだよなぁ。。。
つーか10年くらい前でもよかった。

593 名前:名無し~3.EXE mailto:sage [2008/04/05(土) 07:25:56 ID:16jOobyH]
DOS時代に「名前8文字」「拡張子3文字」だったのを未だに引きずってるんだなあ。

594 名前:名無し~3.EXE mailto:sage [2008/04/05(土) 19:16:07 ID:oeBKfFDa]
重複行の削除を外部ソフトを入れずにやる方法をネットで検索したらこんなのがありました
--------------------------------------uniq.bat
echo off
set prev=
if not exist "%1" goto error
for /f "tokens=* delims=" %%L in ( %1 ) do call :sub %%L
goto exit
:sub
if not "%prev%"=="%*" set prev=%*&&echo %*
goto :EOF
:error
echo.
echo 表示したいファイル名を指定してください。
echo [例] uniq.bat file.txt
echo.
:exit
空白改行等には対応してないとのこと

これは画面上に表示するだけなのでファイルに出力するために
echo %* の後に>>new.txtとかつけてもエラーが出ます
newファイルに出力するためにはどうしたらいいでしょうか?

検索したサイトはなぜかサイトを開くたびにスクリプト警報が出まくるので
2chブラウザでもリンクさせないようにしましたのでご了解ください
www.fpcu.jp/dosvcmd/bbs/log/unixdoswindows/3−0062.html



595 名前:名無し~3.EXE mailto:sage [2008/04/05(土) 19:19:45 ID:oeBKfFDa]
補足しますと
newファイル出力だけが必要で、画面表示は必要ないということです
&&echo %*を&&(echo %*)>>new.txtとかに変えても全部エラーでした

596 名前:名無し~3.EXE mailto:sage [2008/04/05(土) 20:21:46 ID:opCsAdvJ]
uniq.bat >new.txt


597 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 13:45:44 ID:+PcLNC77]
uniq.bat file.txt>new.txt
でしょ。

ところで、画面への出力とファイルへの出力を同時にやる方法は無いのかな?
内部で交互に出力しなきゃダメ?

598 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 16:21:31 ID:nlrXvzZ0]
>uniq.bat file.txt>new.txt
>でしょ。

はて、なんか違ってるのかな?

>ところで、画面への出力とファイルへの出力を同時にやる方法は無いのかな?

あるけど?

599 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 18:07:00 ID:wqKcgo9M]
>>598
> はて、なんか違ってるのかな?
> あるけど?
無知蒙昧の煽り厨かよ。
役立つ情報を書けないんなら書くなヴォケ!

600 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 18:31:05 ID:nlrXvzZ0]
>>599 >>599



601 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 18:47:07 ID:+PcLNC77]
>>598
> あるけど?

どうやんの?

602 名前:名無し~3.EXE [2008/04/06(日) 18:49:15 ID:ejmUfes1]
アフィニティマスクで1を指定して設定した場合シングルコアで作動しますが
これをデュアルコアで作動するように戻すには数値は何を入れれば良いのでしょうか?

603 名前:名無し~3.EXE [2008/04/06(日) 18:52:10 ID:ejmUfes1]
すいません書き忘れてました
クアッドコアの数値もお願いします

604 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 18:55:56 ID:nlrXvzZ0]
>>601
>>uniq.bat file.txt>new.txt
>>でしょ。
>はて、なんか違ってるのかな?

のほうは?

605 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 18:58:08 ID:+PcLNC77]
>>604
単なる煽りなのか?

:error 以降の出力を得たいだけだったら別にfile.txtは要らんけどな。
そんな池沼レスする気だったの?

606 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 19:06:41 ID:c2QC8Myi]
最近2chで増えつつある、出し惜しみ厨の典型だな

607 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 19:10:36 ID:+PcLNC77]
出し惜しみどころか最初から知らないような気がしてきたよ。

やりたいことはmencoderの画面出力をそのままログファイルにも残したいってことなんだけど。
stdoutをそのままファイルにリダイレクトしてしまうとエンコード中の進行度が見れない。

608 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 19:12:59 ID:nlrXvzZ0]
ぷっ

609 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 19:25:04 ID:c2QC8Myi]
>>607
tee.exe T 字型二股ソケット でググれば、たぶんできると思う。
が、俺はやったこと無いが興味はあるので、成功したら、やりかたと結果を書いてくれ

610 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 19:35:33 ID:+PcLNC77]
>>609
ありがとう。

あんまり使ってないけどcygwinは入れてたんだった。数種類のコマンドしか使ったこと無かったから
存在を知らんかったorz
tee.exe あったよw



611 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 19:51:04 ID:+PcLNC77]
>>609
mencoder 色々オプション | tee -a log.txt

これで画面出力と同じものをファイルにゲットできた。
厳密にはちょっと違うけど、それは元々わかってた問題だからOK。

どこかの口だけさんと違って感謝!

612 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 19:58:49 ID:nlrXvzZ0]
teeでなくてもできるけどw

613 名前:名無し~3.EXE mailto:sage [2008/04/06(日) 20:22:49 ID:+PcLNC77]
もうこっちのやりたいことは終わったからレス不要

614 名前:名無し~3.EXE [2008/04/06(日) 22:12:32 ID:MGkgFDSO]
どなたか>>602-603をお願いします

615 名前:名無し~3.EXE [2008/04/06(日) 22:17:42 ID:MGkgFDSO]
すいませんよそ聞きます
失礼しました

616 名前:名無し~3.EXE mailto:sage [2008/04/12(土) 14:20:05 ID:psbvetMj]
cygwin使わずにできんのか

617 名前:名無し~3.EXE mailto:sage [2008/04/12(土) 21:34:37 ID:8rjR8tpP]
動画をバッチ処理したいのですが
解像度かアスペクト比で処理を分岐させたい場合
どのように書けばよいでしょうか?


618 名前:名無し~3.EXE mailto:sage [2008/04/12(土) 21:55:12 ID:frEZV/rR]
if

619 名前:617 mailto:sage [2008/04/12(土) 22:10:27 ID:8rjR8tpP]
>>618
もう少し具体的な回答をお願いします。
例えば解像度が1280x720の場合
echo LanczosResize(428,320)>> %avsfile%
解像度が960x720の場合
echo LanczosResize(480,270)>> %avsfile%
と処理を分岐させたい時
どのように書けばよいでしょうか?

620 名前:名無し~3.EXE mailto:sage [2008/04/12(土) 22:14:42 ID:bsDmcclx]
具体的にって言われても動画の解像度なんて映画館によってまちまちだろ?



621 名前:名無し~3.EXE mailto:sage [2008/04/12(土) 22:16:01 ID:6vn8GrIL]
動画の解像度情報とかバッチファイル中でどうやって取得する気かと小一時間(ry
いやもしそういったツールがあるなら俺も是非欲しいが

622 名前:名無し~3.EXE mailto:sage [2008/04/12(土) 22:40:15 ID:8rjR8tpP]
>>621
クリップボードに解像度情報などを送るソフトはあります。
ttp://kurohane.net/seisanbutu.phtml
にある真空波動研SuperLite
です。
2行目に解像度などがクリップボードに送られるので
それを分岐処理に使いたいです。

623 名前:名無し~3.EXE mailto:sage [2008/04/12(土) 22:47:17 ID:bsDmcclx]
クリップボードの解像度情報とかバッチファイル中でどうやって取得する気かと小一時間(ry
いやもしそういったツールがあるなら俺も是非欲しいが


624 名前:名無し~3.EXE mailto:sage [2008/04/12(土) 22:58:29 ID:L9AzdWZJ]
クリップボードに解像度情報が入ってれば
cliputilなり何なりを経由してforででも
行解析すれば取得は可能じゃない?

真空波動研は使ってないからコマンドラインから
操作できるか知らないけど。

625 名前:617 mailto:sage [2008/04/12(土) 23:09:06 ID:8rjR8tpP]
>>624
真空波動研はコマンドラインから使えるのですが
行解析はどのように行えばよいでしょうか?
クリップボードには
[cap20071129090938.avi]
1920x1080 24Bit Motion JPEG(MJPG) 29.97fps 53943f 124553.95kb/s
PCM 48.00kHz 16Bit 2ch 1536.00kb/s
[RIFF(AVI2.0)] 00:29:59.898 (1799.898sec) / 28,368,765,952Bytes

真空波動研SuperLite 080308 / DLL 080308
のようなデータが送られるので
1920/1080が1.7より大きいか小さいかで分岐処理を書きたいのですが
どのように書けばよいでしょうか?

626 名前:名無し~3.EXE mailto:sage [2008/04/12(土) 23:53:40 ID:ma+dusF0]
面倒くせーからクリップボードの内容をテキストに出力して
そこから必要行を抜き出して分岐判断させれ

627 名前:617 mailto:sage [2008/04/13(日) 00:16:33 ID:pAruhQL3]
>>626
625のように2行目に
1920x1080 24Bit Motion JPEG(MJPG) 29.97fps 53943f 124553.95kb/s
と書かれたテキストファイルから1920/1080の計算結果を得るには
どのように書けばよいのでしょうか?


628 名前:名無し~3.EXE mailto:sage [2008/04/13(日) 00:42:52 ID:2Fn25r/4]
for /?
find /?
findstr /?
if /?
set /?

辺りかな?

629 名前:617 mailto:sage [2008/04/13(日) 01:30:00 ID:pAruhQL3]
>>628
ttp://www.tsg.ne.jp/GANA/S/cliputil/
にあるクリップボードのテキストをDOSで扱うためのツールを使って
for /f "skip=1 tokens=1,2 delims=x " %%A in ('C:\Plugin\cliputil.exe -paste') do
で1920と1080を取り出せそうなのですが
ここから先がわかりません。
どのように書けばよいでしょうか?

630 名前:名無し~3.EXE mailto:sage [2008/04/13(日) 10:21:35 ID:q3/8LHKx]
typeでテキストを表示したアドレスをlynxにぶち込むにはどういう方法がありますか?



631 名前:617 mailto:sage [2008/04/13(日) 18:25:52 ID:pAruhQL3]
もうあきらめてPerlで処理しました。
perlに頼ると負けた気分になるけど
今日中には終わらせたかったので。

632 名前:名無し~3.EXE mailto:sage [2008/04/13(日) 19:43:28 ID:QXIVF9vj]
そういえば標準で数値計算に浮動小数点数使えるコマンドってあったっけ

633 名前:名無し~3.EXE mailto:sage [2008/04/13(日) 20:40:16 ID:U2MS+S2g]
>>631
つか、バッチでどうしてもやらざるを得ない理由がなければ、
Perlのほうが断然便利だよ。

バッチは、OSのVersionによって解釈の意味が変わったり、
コマンド直打ちとバッチ内で記述する書式が違っていたりと、
とにかくクセがありすぎる。

パズルを組み立てて楽しむ程度の心の余裕がないとムリ。
即効性と実用度で言えばPerlが断然勝利。

さいごに、参考にPerlで解決した方法を書いてもらえれば、
スレ的に有益になるだろう。

634 名前:名無し~3.EXE mailto:sage [2008/04/13(日) 21:19:04 ID:bRCjXHsW]
連番数字を作るとき数字なら開始終わりSETPが使えるので(1.1.100)とかで
簡単に作れますよね、これを
アルファベットで連文字作りたいときはどうやったらいいでしょう
aaaaaa〜zzzzz
シロートがリファレンス読んで何とか2文字バージョンまでは作ったけど

FOR %i IN (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) DO @(FOR %j IN (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) DO @echo %i%j)

1)6文字バジョーンはどうやったらいいでしょうか?
2)それと実際に使うとは全出力ではなくbaaaaa〜czzzzzまで出力とかしたいので
フレキシブルな出力変更可能なやり方で

1)2)を満たすもの。でも2)が困難だったら1)だけでも
どなたかお願いします


635 名前:631 mailto:sage [2008/04/14(月) 01:48:28 ID:OkNafE+v]
>>633
じゃぁ解決した方法だけをば
バッチ処理でfileリストと真空波動研の結果リストをファイルに保存
perlに処理を移して626さんのとおりの処理をさせて
エンコバッチファイルをperlに書き出させてそれをcall
以上です。

636 名前:名無し~3.EXE mailto:sage [2008/04/22(火) 11:20:21 ID:/OOwZtgR]
コマンドラインから、net use コマンドを使うことなく(ドライブ文字を割り当てないで)
ファイルをコピーしたいのですが、可能でしょうか?

エクスプローラからの操作であれば、\\10. 1. 2. 30\ のように入力してUSER/PASSWORDを
入力すれば、ドライブレターを使うことなくファイルがコピーできますが、この操作がしたいのです。


637 名前:名無し~3.EXE mailto:sage [2008/04/22(火) 11:27:10 ID:Zu/QpkUZ]
net use で必ずドライブに割り当てないといけないわけじゃないよ。

net use \\host\path PASSWORD /user:USERNAME
copy ほげほげ
net use \\host\path /delete

とか。

638 名前:636 mailto:sage [2008/04/22(火) 11:46:48 ID:fvGqunE0]
>>637
即レスありがとうございます。
ドライブ名無しで試してエラーが出たので、net use はダメかと思っていたのですが、
レス通りだとできました。自分で試した構文が間違っていたようです。ありがとうございました!


639 名前:名無し~3.EXE mailto:sage [2008/04/23(水) 14:50:16 ID:P+H+JVhc]
Ctrl+Cキーで中断したバッチ処理を再開するにはどうしたらいいのでしょうか?
また、中断されている処理があるかどうか確認する事は出来ますか?

よろしくお願いします。

640 名前:名無し~3.EXE mailto:sage [2008/04/23(水) 15:11:36 ID:aJ9ihgZR]
バッチ ジョブを終了しますか (Y/N)?



641 名前:名無し~3.EXE mailto:sage [2008/04/23(水) 23:38:12 ID:wxDe1tZY]
Y

642 名前:名無し~3.EXE mailto:sage [2008/04/24(木) 01:46:00 ID:PjPeKbCJ]
YES! YES! YES!

643 名前:名無し~3.EXE mailto:sage [2008/04/24(木) 02:25:29 ID:/KwaoZJn]
How many files (0-15) ?

644 名前:639 mailto:sage [2008/04/24(木) 08:29:44 ID:OFIsBZW/]
>>640-642
ありがとうございます。 教えて頂いた通りに「Y」を押すことで無事終了することが出来ました !

いあ…すみません 中断してたのはバッチじゃなかったです…
もう少し調べてくるっス


645 名前:名無し~3.EXE mailto:sage [2008/04/24(木) 20:31:24 ID:s1mKrdXj]
ちょ

646 名前:名無し~3.EXE mailto:sage [2008/04/26(土) 06:53:32 ID:S2f4sNFX]
byteをMBに変換するために変数で割り算やってます
試しにこんな感じで事前の予備実験してみて上手くいったので
(わざと割り切れない数字でやってみた例)
@echo off
for /L %%k in (10485763,1048575,104857513) do (
set /a NN=%%k/1048576
echo=約!NN!MB
)
Pause

上と同じ set /a NN=%%k/1048576 を使って、コレをやってみたら
全然だめなんです。「32ビットなんたら」が出たり
エラーが出ないときは計算結果が間違ってたり
@echo off
for /F "tokens=1-3 delims= " %%i in ('fsutil volume diskfree c:') do (
set /a NN=%%k/1048576
echo=%%i%%j約!NN!MB
)
Pause

エラーメッセ−ジ"数値は 32 ビットで表記される数値です"
をGoogleで検索してもヒット無しで得られる情報ゼロ



647 名前:名無し~3.EXE mailto:sage [2008/04/26(土) 09:16:13 ID:+HXIEmBQ]
32 ビットで表記される数値とは、-2,147,483,648 から +2,147,483,647 までの値の符号付き整数を表します。

648 名前:名無し~3.EXE mailto:sage [2008/04/26(土) 10:13:23 ID:noTmo+SZ]
>>646
for ... ( ... )
って書き方は有効なのかな?


649 名前:名無し~3.EXE mailto:sage [2008/04/26(土) 10:30:49 ID:noTmo+SZ]
ああ、ごめんなさい、偉そうな書き方したけど間違った理解をしてました。
( ) のブロック内での変数の扱われ方ですね。
if 1==1 (
 set xxx=hoge
 echo %xxx%
)
のようなとき、%xxx%はブロックに入る前の値しか参照できないようですね。

で646をよくみたら… ほんとにそれ動いたのって感じですね…

650 名前:名無し~3.EXE mailto:sage [2008/04/26(土) 10:50:19 ID:+HXIEmBQ]
>>648-649
何いってんだ? cmd /? からやり直せ。



651 名前:名無し~3.EXE mailto:sage [2008/04/26(土) 11:05:58 ID:noTmo+SZ]
>>650
すんません、理解しました。。。
set hoge=aaa && echo %hoge%
みたいなのが思った通りに動いてくれなかったのもこれなんだなぁ

652 名前:646 mailto:sage [2008/04/26(土) 12:00:02 ID:dIylg/Sf]
>>647
どうも。直し方が分からないし変な横槍入ってめんどくさいので割り算は諦めて
バイト値の下6桁を削って簡易表示でやることにしました
約!NN:~0,-7!MB
でわみなさんgood-by

653 名前:名無し~3.EXE mailto:sage [2008/04/27(日) 01:37:19 ID:xz87xW1t]
if文の中にechoを入れたいのですが、そのecho文中に () があるとそれをifの
グループ化機能と誤認して構文エラーになってしまいます。
echo文全体を () や '' で括ったり、( と ) の前にそれぞれ^を加えてもダメでした。
何か手はありませんか?

654 名前:名無し~3.EXE mailto:sage [2008/04/27(日) 09:29:55 ID:Svy4QoHk]
>>653
括弧の前に ^ をおいてエスケープ

655 名前:名無し~3.EXE mailto:sage [2008/04/27(日) 10:00:16 ID:0TiqPju+]
シングルで囲むとどーなるか

656 名前:名無し~3.EXE mailto:sage [2008/04/27(日) 11:09:18 ID:eQlwkWfL]
>>655
自分で試せよ。

657 名前:名無し~3.EXE mailto:sage [2008/04/27(日) 16:34:30 ID:xz87xW1t]
>>654
ありがとうございます、( ) がechoの文中で完結してる場合は必要ないけれども
複数のコマンドにまたがるようにして ( ) が使われてる場合 ^ が必要みたいですね。
ところでif文中のechoは表示できる文字数に制限があるみたいで(半角英数120文字程度?)
そのechoの内容をファイルにリダイレクトしようとしても途中までしか書き込めませんでした。
今回に限って言えば、if文からgotoで抜け出し、そっちにechoを書いて
リダイレクトする判断は結果としては正しかったようです ^ ^;

658 名前:名無し~3.EXE mailto:sage [2008/04/27(日) 18:58:17 ID:ec2ADBWt]
>>657
> ところでif文中のechoは表示できる文字数に制限があるみたいで(半角英数120文字程度?)

@echo off
if 1==1 (
echo aaa
echo bbb
echo (ccc^)
echo ddd
) else (
echo eee
)
if 1==1 (
echo fff
echo 12345678911234567892…中略300文字…1234567890
echo 12345678911234567892…中略300文字…1234567890> tmp.txt
)

全く問題なし。

659 名前:名無し~3.EXE mailto:sage [2008/05/10(土) 00:41:56 ID:jOW3pjRB]
batの引数について質問です。

---test.bat---
if "%1"=="" goto Error
set var=%1
echo %var%
perl aaa.pl %1
goto End
:Error
echo 引数を入れて下さい...
:End
echo 終了します...
---終わり---

の内容な.batを書いたんですが、これを > test.bat 01 02
として実行させると、perl aaa.pl には "01"のみ引数として渡されます。(ここまではわかります。)
で、実はこの aaa.pl に複数の引数(場合によっては10個以上)を渡したいです。(しかも実行するごとに引数の内容が変わります)

そこで、
> test.bat "01 02" として実行させると、’02""=="" の使い方が誤っています。’と怒られます。
> test.bat "01 aa bb" とすると、’aa の使い方が・・・’とやはり怒られて、実行できません。
これは、if "%1"=="" の部分で、%1が展開されて if ""01 02""=="" goto・・・ と、構文エラーになってしまうためかと思われます。

そこで、if %1=="" としてやると、一応ifの部分はパス出来ますが、perl aaa.pl "01 02"となってしまい、
aaa.pl側からは一つの引数として扱われます。(perl側からは、複数の引数として渡したい)
さらにこの場合だと、
> test.bat と引数なしで実行した場合は ’goto の使い方が誤っています。’ と言われてしまいます。
今度もやはり if %1=="" が、 if =="" goto・・・ と展開されてしまい、構文エラーになってしまいます。

660 名前:659 mailto:sage [2008/05/10(土) 00:42:27 ID:jOW3pjRB]
長くなってしまいましたが、まとめますと、

> test.bat "01 02 AA BB CC ・・・" (引数の数は可変。10個以上の場合もあり)
と、コマンドラインから実行して、
perl aaa.pl 01 02 AA BB CC ・・・ (.batの引数からダブルクオートを省いたものをそのまま.plに渡す)
とゆうことがしたいです。
さらに > test.bat と、引数なしで実行されてしまった場合は、:Errorのブロックを実行して警告を出力させたいです。

もうひとつついでに言いますと、
goto Errorで飛んだ先の :Errorブロックのみを実行させたいんですが、
上のスクリプトだと、その下の:Endブロックも実行されてしまい、
引数を入れて下さい...
終了します...
と出力されてしまいます。

:Endの前に exit を書き足すと、コマンドプロンプト自体が終了してしまいます。これもどうにかしたいです。



661 名前:名無し~3.EXE mailto:sage [2008/05/10(土) 00:51:01 ID:2oG4P/Du]
perlが使えるなら、全部perlで処理したほうが効率的では?

バッチは、代替がない環境で仕方なく使うものだと俺は理解しているが

662 名前:659,660 mailto:sage [2008/05/10(土) 01:02:51 ID:jOW3pjRB]
>>661
ええ、実は目的の動作はPerlだけですでに出来上がってるんですが、ふとbatでやってみようと思って、
昨日一日かけて色々ググッてみたり、いくつかスクリプト書いたりしたんですが、
どうしても出来なくて、ヒジョーにクヤシイ!!って思った次第です。

で、こちらの達人方にご指導いただければと思いまして・・。

663 名前:名無し~3.EXE mailto:sage [2008/05/10(土) 01:21:23 ID:eXbatmiN]
%*
goto :eof


664 名前:660 mailto:sage [2008/05/10(土) 01:56:15 ID:jOW3pjRB]
>>663
うおおお!!できました。
引数が100個あってもちゃんと渡せます。

感動しました。ありがとうございます。

665 名前:名無し~3.EXE mailto:sage [2008/05/16(金) 22:13:06 ID:k4qTlZ8j]
フォルダの中を消すには、どうするとよいですか?
rd /s
だと、フォルダごと消える。
複数あるのでバッチ処理したいが、何かよい方法は無いですか?

666 名前:名無し~3.EXE mailto:sage [2008/05/16(金) 22:19:39 ID:V84Krwca]
rd /s フォルダ\*

でどですか

667 名前:名無し~3.EXE mailto:sage [2008/05/17(土) 07:37:18 ID:Tfmv5vbb]
rd /s /q フォルダ
md フォルダ

まぁタイムスタンプが変わってしまうけどな

668 名前:名無し~3.EXE mailto:sage [2008/05/17(土) 17:15:03 ID:948oFaXd]
cd フォルダ
rd /s .

669 名前:名無し~3.EXE mailto:sage [2008/05/17(土) 23:39:45 ID:PBIKhabT]
バッチファイルでプログラムに00 01 02 03 ・・・といった連番になっている引数をわたしたい。
普通にfor文でやると頭に0がつかないので複数のfor文を組み合わせて実行しています。
ただ桁数が増えるとforと変数が多くなってわかりにくくなってしまします。
もうすこしいい方法はないでしょうか?

670 名前:名無し~3.EXE mailto:sage [2008/05/18(日) 00:15:50 ID:9CUWfmLK]
for /l



671 名前:名無し~3.EXE mailto:sage [2008/05/18(日) 00:29:22 ID:Ox8jPhTX]
@echo off
setlocal enabledelayedexpansion
set args=
set temp=

for /L %%i in (0, 1, 12) do (
set temp=00000000%%i
set args=!args! !temp:~-4!
)

echo args=%args%
pause

672 名前:名無し~3.EXE mailto:sage [2008/05/18(日) 00:45:56 ID:Ox8jPhTX]
temp はまずかった

673 名前:名無し~3.EXE mailto:sage [2008/05/18(日) 01:37:13 ID:sec9T0KN]
for /L %%i in (0, 1, 9) do for /L %%j in (0, 1, 9) do (

674 名前:名無し~3.EXE mailto:sage [2008/05/18(日) 01:43:47 ID:FcpR8lz9]
>>671
ありがとうございます。できました。
setと環境変数の勉強がたりなかったようなので勉強しなおそうと思います。

675 名前:名無し~3.EXE mailto:sage [2008/05/18(日) 10:34:31 ID:TvxyqS1+]
質問です。お願いします。

作成した下のbatファイルをdos窓からコマンド入力して
正常動作は確認できたんですが

windows xp で ファイル右クリックから呼び出すように
(SendToに置いて呼び出す)するとif文が一切判断されず
そこで終了してしまいます。

実行時のDOSの種類が違うんでしょうか?

--
:start

コマンド処理 %1
shift

IF "%1"=="" GOTO :eof
goto start
--

676 名前:名無し~3.EXE mailto:sage [2008/05/18(日) 10:55:34 ID:paRoTs6C]
%1 を %~1 にするとかじゃね?
どうでもいいけど、コマンドの大文字小文字は
統一したほうがいいよ

677 名前:名無し~3.EXE mailto:sage [2008/05/18(日) 13:43:59 ID:sec9T0KN]
>>675
for %%1 IN (%*) DO コマンド処理 %%1

678 名前:名無し~3.EXE mailto:sage [2008/05/18(日) 14:16:17 ID:L+mLCnGS]
shift したら %1 は無くなるだろ。

679 名前:名無し~3.EXE mailto:sage [2008/05/18(日) 15:04:01 ID:ku4xMzVb]
>>676
質問者じゃないけど、この2つの違いって何ですか?

680 名前:675 mailto:sage [2008/05/18(日) 19:43:39 ID:TvxyqS1+]

>>677 の方法で処理できました。

if を大文字にしていたのは 試行錯誤の残骸で
shift の位置は確かに適切ではないですね

ありがとうございました >> all



681 名前:名無し~3.EXE mailto:sage [2008/05/18(日) 20:49:26 ID:a9xwvrWi]
IF "%1"=="" GOTO :eof
goto start



set x=%1
IF not defined x GOTO :eof
goto start

682 名前:名無し~3.EXE mailto:sage [2008/05/19(月) 08:20:58 ID:nvSZDr4K]
>>679
%~1は二重引用符「"」を取ったもの。

%1に「"abc"」という文字列が入っていた場合、

if "%1"=="" goto :eof → if ""abc""=="" goto :eof
""=="" なので常に goto :eof を実行。

683 名前:名無し~3.EXE mailto:sage [2008/05/19(月) 13:26:33 ID:EjVEkl8f]
ちがうよ
if ""abc""=="" goto :eof

if ""abc""=="" echo true
ってやってみな

たぶん
if ""a c""=="" goto :eof
でエラーになってるんだろ

バッチファイルの関連付けを
cmd /k "%1" %*
に変えて実行結果を確認しろ


684 名前:名無し~3.EXE mailto:sage [2008/05/22(木) 22:06:39 ID:Vl7E04+C]
スンマソン
バッチでIPアドレスの設定は可能でしょうか?
あとディスク使用量を出すコマンドはあるでしょうか?
よろしくです

685 名前:名無し~3.EXE mailto:sage [2008/05/23(金) 07:17:56 ID:PYuFRnph]
>>684

netsh interface ip set address name="ローカル エリア接続" source=static addr=192.168.1.1 mask=255.255.255.0
netsh interface ip set address name="ローカル エリア接続" gateway=192.168.1.254 gwmetric=0
netsh interface ip set dns name="ローカル エリア接続" source=static addr=192.168.1.253 register=PRIMARY


686 名前:名無し~3.EXE mailto:sage [2008/05/23(金) 10:07:11 ID:ZLhGN8vH]
fsutil volume diskfree c:
空きとドライブの全容量が出るからそこから逆算すれば。

687 名前:名無し~3.EXE mailto:sage [2008/05/23(金) 19:00:56 ID:HPZlYjUP]
dir /s c:\

688 名前:名無し~3.EXE [2008/05/25(日) 14:35:32 ID:o3W/fKZ/]
Accessのローカルのクライアントマシンに存在するmdbファイルを世代管理を使ってサーバーにバックアップを取る仕組みを考えております。
世代管理は例えば今日からで言えば20080525.mdb 〜 20080601.mdbまで一週間分保持するものとし6/2になれば5/25日のバックアップファイルは消され一番古いものが5/26日となります。
また同一日付でこのバッチが起動された場合は同じ日付のバックアップの保存先のmdbファイルが新しい方の日付で更新される仕組みを考えております。

これをどうしてもコマンドプロンプトのbatファイルにて作成したいのですが、ベテランの方ご教授していただけますか?

以前このような世代管理を行っていた方はいたのですが、現状その方に聞ける事情ではなくインターネットで調べてもうまいような検索結果がヒットしません。

どなたかご教授の程お願い致します。


689 名前:名無し~3.EXE mailto:sage [2008/05/25(日) 14:59:19 ID:QPVRGIlk]
>>688
日付をつけるとややこしくなりそうだし、どうせ消すのなら

backup_mon.bat
copy xxxx.mdb backup_mon.mdb

みたいなのを1週間分つくって、
タスクマネージャで起動かけるとかじゃだめ?

これだと古いのは勝手に消えるし。



690 名前:689 mailto:sage [2008/05/25(日) 15:03:40 ID:QPVRGIlk]
× タスクマネージャ
○ タスクスケジューラ

orz




691 名前:名無し~3.EXE mailto:sage [2008/05/25(日) 15:44:38 ID:wEJGvu77]
TXTファイルから各行の最後尾文字列だけ抽出するバッチファイル

1,2332,311133,444,555,66666,1行目成功
1,2,1111,33333333333333333,2行目成功
22444222,1111,333,444,5,6,7,3行目成功
以下略
最後尾が何番目のトークンかは不定
最後尾の前に並ぶ文字列に規則性無し

上のTXTファイルから
1行目成功
2行目成功
3行目成功
以下略
と取り出すもの
○行成功というは仮に書いてるだけでこの文字列にも規則性は無し

検索したらniftyのフォーラムで同様の質問している人がいたが解答に出会えないまま

このバッチファイルは考え方としてどんなものがあるでしょうか?
アイデアだけでも歓迎
ヒントをくれたらバッチファイルはしこしこ組みまする


692 名前:名無し~3.EXE mailto:sage [2008/05/25(日) 16:21:12 ID:zbkosXn7]
一般的な方法じゃないけど、
各行の後ろの何文字かを取り出して、
,をスペースに変換して、
一番最後のワードを結果とするのはどうですかね。

693 名前:名無し~3.EXE mailto:sage [2008/05/25(日) 18:25:46 ID:k5O0hNsJ]
for /f "delims=" %%L in (hoge.txt) do (
for %%I in (%%L) do set str=%%I
call echo %%str%%
)


694 名前:名無し~3.EXE mailto:sage [2008/05/25(日) 18:42:07 ID:wEJGvu77]
>>693
出来ました<(_ _)>

695 名前:名無し~3.EXE mailto:sage [2008/05/26(月) 12:03:03 ID:2uqHEmAT]
今更Windows2000なのですが、画面の解像度とかカラーモードをバッチで設定することは可能ですか?


696 名前:名無し~3.EXE mailto:sage [2008/05/26(月) 13:45:51 ID:SfOkgupv]
コマンド1個だけじゃ無理だろうね。

いろいろ手順を踏めばできないこともないが、
適当な外部ツールを起動させるだけのバッチを作ったほうが手間的に得

697 名前:名無し~3.EXE mailto:sage [2008/05/26(月) 13:56:06 ID:NdJLY4Hf]
>>695
つttp://www.vector.co.jp/soft/dl/win95/util/se310819.html

698 名前:695 mailto:sage [2008/05/26(月) 14:11:14 ID:2uqHEmAT]
即答ありがとうございます。>>697のツールを試してみることにします。


699 名前:名無し~3.EXE mailto:sage [2008/05/27(火) 19:59:09 ID:/w3vmy7X]
コマンドプロンプトにおける、\"の挙動ってどうなっているのでしょうか?

"s/'//g" | more

という引数を渡すと "s/'//g" のみが引数として渡り
結果がページ毎に止まって出力されます。しかし

"s/'/\"/g" | more

という引数を渡すと "s/'/\"/g" と "|" と "more" の3つが引数として渡ってしまいます。
後者2つをそれぞれパイプ、moreとして扱って貰うにはどうしたら良いのでしょうか?

700 名前:名無し~3.EXE mailto:sage [2008/05/27(火) 20:15:01 ID:/w3vmy7X]
ちなみに、いくつかのコマンドで試しましたが
どれもやはり | more が引数として取られてしまいました。

>gawk "BEGIN{ for(i in ARGV) print ARGV[i]; }" "s/'/\"/g" | more
gawk
s/'/"/g
|
more

>perl -e "print join' ',@ARGV" "s/'/\"/g" | more
s/'/"/g | more

>ruby -e "p ARGV" "s/'/\"/g" | more
["s/'/\"/g", "|", "more"]



701 名前:名無し~3.EXE mailto:sage [2008/05/27(火) 22:24:26 ID:24yESl2I]


702 名前:名無し~3.EXE mailto:sage [2008/05/27(火) 22:43:51 ID:/w3vmy7X]
エスケープは ^ でしたっけ。しかしそうすると今度は

>perl -e "print join',',@ARGV" "s/'/^"/g" | more
s/'/^/g | more

| more までが全て1つの引数として扱われてしまいました。

703 名前:名無し~3.EXE mailto:sage [2008/05/27(火) 22:48:28 ID:hncFSdKH]
括弧は?

704 名前:名無し~3.EXE mailto:sage [2008/05/28(水) 11:01:30 ID:ae35Ovs8]
cmdを起動する時に、詳細設定の環境変数を弄らずに
path %path%;c:\bin やdoskey等を打ち込んだ状態にしたいのですが、どうすればできますか?


705 名前:名無し~3.EXE mailto:sage [2008/05/28(水) 13:49:11 ID:PlLgl/L0]
cmd起動用のバッチでも書け

706 名前:名無し~3.EXE mailto:sage [2008/05/28(水) 14:16:28 ID:lcT2TWdz]
cmd /k "path %path%;c:\bin & doskey"

707 名前:名無し~3.EXE mailto:sage [2008/05/28(水) 14:23:02 ID:lcT2TWdz]
\042
\x22

708 名前:名無し~3.EXE mailto:sage [2008/05/28(水) 14:47:27 ID:ae35Ovs8]
>>706
ありがとうございます

709 名前:名無し~3.EXE mailto:sage [2008/05/28(水) 21:52:55 ID:bRtNuYLO]
>703
こういうことでしょうか?
>( perl -e "print join',',@ARGV" "s/'/^"/g" ) | more
More?
More?
More?
More?

>( perl -e "print join',',@ARGV" "s/'/\"/g" ) | more
More?
More?
More?
More?

More? が終わりません…。

>707
>perl -e "print @ARGV" "\x22"\042"" | more
\x22\042

すみません、よく分からないです…。

どなたか、ダブルクォートを引数として渡して
パイプ以降はちゃんとパイプとして認識されるような書き方を知らないでしょうか…。

710 名前:名無し~3.EXE mailto:sage [2008/05/28(水) 22:20:25 ID:wRMFx7lg]
バイナリファイルの先頭1MBだけコピーしたいのですが、
この用途に適したコマンドまたはツールはないでしょうか。

ファイルのハッシュを計算する際、フルにスキャンすると時間がかかるので、
個体認識さえできればよい、という前提で探していますが、
CUIツールは見つからず、ヘルプいただけると助かります。



711 名前:名無し~3.EXE mailto:sage [2008/05/29(木) 01:18:04 ID:JW1TfnJu]
call :hoge > hoge
more hoge
del hoge
goto :eof
:hoge
perl -e "print join',',@ARGV" "s/'/^"/g"


712 名前:名無し~3.EXE [2008/05/29(木) 02:05:00 ID:EjL5v9Ji]
ちょっと長くなりますがschtasksについて質問させてください。

テキストファイルをリモートサーバ上にコピーするバッチcollect.batと、
それをschtasksを使ってAdmin権限で実行するプレバッチについて。

配布して実行した結果、プレバッチ内のschtasks処理がされずに
失敗したものがほとんどで、成功したものは配布対象の1割程度
でした。バッチを作成した環境やテスト環境では成功していました。

プレバッチでは

set LOGFILE=D:\LOG\collect.log
echo [%TIME:~0,8% start] >> %LOGFILE%
schtasks /create /u:administrator /p:**** /tn collect
/tr D:\collect.bat /sc once /start %TIME:~0,5% >>%LOGFILE%

schtasks /run /tn collect >> %LOGFILE%
echo [%TIME:~0,8% end] >> %LOGFILE%

こんな感じにしていますが、なぜかschtasksコマンドの結果が
collect.logには何も残っていません。
プレバッチの実行はこのログからも確実にされていることが
分かっています。
Task Schedulerサービスは実行されていますが、サービス未起動
でもschtasksが返すメッセージが残るはずなので不思議です。
成功した環境と失敗した環境との違いも、今の所はわかりません。

環境はWindowsXP Pro SP2です。
schtasksが正常に実行されないのはなぜでしょうか?


713 名前:名無し~3.EXE mailto:sage [2008/05/29(木) 11:03:38 ID:kmN2kcgk]
>>710
dd でいいんじゃないかな
genluck.blog78.fc2.com/blog-entry-2.html
cygwinとかgnuwin32とかにもあると思う。

714 名前:名無し~3.EXE mailto:sage [2008/05/29(木) 13:15:02 ID:vznSjYc6]
>>712
schtasksのエラーのメッセージは標準エラー出力に出るんじゃね?
schtasks 〜 >> %LOGFILE% 2>&1

715 名前:名無し~3.EXE mailto:sage [2008/05/29(木) 21:38:50 ID:wqEdMWdF]
>>713
ありがとうございます。おかげさまで、かなり高速で処理できました。
まさかWindows環境で、あの便利なDDが使えるとは・・・

/of にHDDのデバイス名を割り当てたら死んでしまうので、
バッチで作る際は、その点だけ要注意ですね。

716 名前:名無し~3.EXE mailto:sage [2008/05/30(金) 20:58:00 ID:fOxd9QQm]
>711
う〜ん、バッチファイルの話では無いのでこちらで聞いていたのですが

…とりあえず、色々考えてみます。ありがとうございました。

717 名前:名無し~3.EXE mailto:sage [2008/05/30(金) 22:34:33 ID:9ky/2+Nz]
それより正規表現で>>707の意味を調べろよ

718 名前:名無し~3.EXE mailto:sage [2008/05/31(土) 01:06:58 ID:zEJ6JTHT]
\ ただの文字
" 開始引用符は終了引用符までのすべての文字をただの文字として扱う
^ 引用符中でなければ次の文字が持っている機能をエスケープする
したがって s/'/^"/g となる。プログラムに "s/'/"/g" を渡したいのなら ^"s/'/^"/g^"
となる。
ただしプログラム側が " に対して特別な処理をしていてcmd.exeが渡した引数と異なる値
になるかもしれない。
VC++ 2003ではs/'/^"/gはプログラム側でGetCommandLine()するとs/'/"/gだったが、
argv[1]はs/'//gになった。
s/'/^"""/g|moreはGetCommandLine()ではs/'/"""/gとなりargv[1]はs/'/"/gになった。
コンパイラやプログラム側の処理でどうなるかはわからないが、たぶん正解は
s/'/^"""/g|more


719 名前:名無し~3.EXE mailto:sage [2008/05/31(土) 12:55:23 ID:LVZHNqTn]
引数に空白とタブルクォートが両方入るならどうなる?

720 名前:名無し~3.EXE mailto:sage [2008/05/31(土) 17:28:29 ID:W5p9QjDe]
このプログラム argecho.c をコンパイルして試してみた。
#include <stdio.h>
#include <string.h>
#include <windows.h>
int main(int argc,char **argv)
{
char *p;
int i;

p = GetCommandLine();
if ( p == NULL ) {
exit(1);
}
printf("GetCommandLine=[%s]\n",p);
for ( i = 0 ; i < argc ; i++ ) {
printf("argv[%d]=[%s]\n",i,argv[i]);
}
return 0;
}
>argecho s/" "'/\^"/g arg2 |more
GetCommandLine=[argecho s/" "'/\"/g arg2 ]
argv[0]=[argecho]
argv[1]=[s/ '/"/g]
argv[2]=[arg2]

>argecho \^"s/" "'/\^"/g\^" arg2 |more
GetCommandLine=[argecho \"s/" "'/\"/g\" arg2 ]
argv[0]=[argecho]
argv[1]=["s/ '/"/g"]
argv[2]=[arg2]
(VC++ 2003の)ランタイムルーチンがコマンドラインをargv[]に分解するときに \ は " をエスケープする意味があるのでこうなった。
フリーのコンパイラ(Visual C++ 2005 Express Edition, Borland C++ Compiler 5.5など)をインストールして追試してみてくれ。



721 名前:名無し~3.EXE [2008/05/31(土) 22:11:49 ID:Uj21DRlS]
以前、似たような試験をしてみたところ、
Visual C++ 2005 Express Edition と MinGW の gcc は同じ結果で
Borland c++ 5.5 だけ結果が違ってた。
Windows では、コマンドラインを解釈するのはランタイムライブラリ。
コナパイラが変われば解釈も変わる。
同じ Visual C++ でも将来のバージョンで変わるかもしれない。
コンパイラに依存するような書き方をするのは不安だよね。
危ない橋をわたるより、もっと確実な方法を取ったほうがいいよ。

722 名前:名無し~3.EXE mailto:sage [2008/05/31(土) 22:20:32 ID:1exRLpNU]
んじゃ、batの結果
@echo off
echo %%*=[%*]
echo %%0=[%0]
echo %%1=[%1]
echo %%2=[%2]

Vistaのcmd.exe

C:\>arg s/" "'/\^"/g arg2 |more
%*=[s/" "'/\"/g arg2]
%0=[arg]
%1=[s/" "'/\"/g arg2]
%2=[]


C:\>arg \^"s/" "'/\^"/g\^" arg2 |more
%*=[\"s/" "'/\"/g\" arg2]
%0=[arg]
%1=[\"s/"]
%2=["'/\"/g\" arg2]

723 名前:名無し~3.EXE mailto:sage [2008/05/31(土) 22:36:47 ID:1exRLpNU]
ついでにVistaのcommand.com (dosonly)
とても素直です。

C:\>ARG s/" "'/\^"/g arg2 |more
%*=[*]
%0=[ARG]
%1=[s/"]
%2=["'/\^"/g]
%3=[arg2]

C:\>ARG \^"s/" "'/\^"/g\^" arg2 |more
%*=[*]
%0=[ARG]
%1=[\^"s/"]
%2=["'/\^"/g\^"]
%3=[arg2]

C:\>VER

MS-DOS Version 5.00.500

724 名前:名無し~3.EXE mailto:sage [2008/06/01(日) 00:09:57 ID:GAaQjz3F]
色々ありがとうございました。
>718-723 の説明で完全に理解しました。
私の勘違いはどうやらいくつかあったようで

・\をcmdが処理していると思っていた
 (cmd的にはただの文字であり、アプリ側で処理していた)

・引用符は空白の入った引数を括るためのものだと思っていた
 (空白に限らず、"以外全ての文字をただの文字として扱わせるものだった)

・引用符は1つの引数全体を括るものだと思っていた
 (引数の途中から途中を括ることができる)

・引用符中であろうと ^ はエスケープとして機能するハズだと思っていた
 (引用符は空白を括るだけでなく ^ すらも文字列化してしまう)

>702 は""の中に ^ があった為、エスケープされず
次の"で引用符としての効果が終了、
/gの後が2つめの引用符の開始になってしまったのですね。

725 名前:名無し~3.EXE [2008/06/01(日) 11:12:36 ID:dypgy/G+]
>723
>ついでにVistaのcommand.com (dosonly)
>とても素直です。
ナイーブなまんま。 日本に来て英語喋り続けるんだYO!

726 名前:名無し~3.EXE mailto:sage [2008/06/01(日) 22:21:54 ID:Sj5PJvNr]
すんません
すごい低俗な質問なんですが

ren(rename)がうまくいきませぬ

たとえばデスクトップにあるテストって名前のフォルダの名称を変更する場合

C:\Documents and Settings\****\デスクトップ>ren テスト テスト1

こういうやり方をしてうまくいかないのは
やっぱりがおかしいんでしょうか○....rz



727 名前:名無し~3.EXE mailto:sage [2008/06/01(日) 22:29:59 ID:Sj5PJvNr]
いえきっと

やっぱり頭がおかしいんだといいたかった・・・(´・ω・`)

728 名前:名無し~3.EXE mailto:sage [2008/06/01(日) 23:30:35 ID:qvFoSpKB]
>>726
普通にできるが?

「テスト」内のファイルを使用中にリネームしようとしてるんじゃないの?

729 名前:名無し~3.EXE mailto:sage [2008/06/01(日) 23:40:24 ID:Sj5PJvNr]
>>728
いえ開いてなんていないですが・・
これであってるんですか

同見ても無反応・・・

730 名前:名無し~3.EXE mailto:sage [2008/06/01(日) 23:41:55 ID:Sj5PJvNr]
すません途中送信してしまたorz

>>728
いえ開いてなんていないですが・・
これであってるんですか

同見ても無反応・・・

で、renってファイルがデスクトップに作成されちまいやす



731 名前:名無し~3.EXE mailto:sage [2008/06/01(日) 23:58:36 ID:3OfuHUqF]
>>730
まさか「デスクトップ>ren テスト テスト1」を打ってる?
デスクトップにcdして、それから「ren テスト テスト1」だぞ

732 名前:名無し~3.EXE [2008/06/02(月) 00:04:46 ID:D3dgcEjP]
C:\Documents and Settings\****\デスクトップ>
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ↑これは「プロンプト」と言って、入力しなくていい。

ren テスト テスト1
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ↑あなたが入力するのは、コレ!

つまり、
C:\Documents and Settings\****\デスクトップ>ren テスト テスト1
                              ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ここだけ入力するとこ

733 名前:名無し~3.EXE mailto:sage [2008/06/02(月) 00:06:34 ID:Sj5PJvNr]
>>731

cd<C:\Documents and Settings\Akihiko\デスクトップ
ren テスト テスト1

こういうことでしたか無知ですいません
ググりまくったんですが
どこ見てもコマンドの説明とかあるんですが構成とかまったくなくて○..rz

ばかですいまそん

ほんとはファイルの名前だけ入れ替えとかやりたかったんですが
これだけのことにこんな手間取るなんて・・・

諦めて半年くらいROMってきます
ありがとうorz

734 名前:733 mailto:sage [2008/06/02(月) 00:08:33 ID:Cid0TIPt]
>>732
ouch!

レスがついてる!
親切にありがとう

一番大事なとこが抜けてたんですね
バッチファイルが作りたかったんですorz

ほんと素人すぎてすいまでした

735 名前:名無し~3.EXE mailto:sage [2008/06/02(月) 00:14:22 ID:Cid0TIPt]
すいまでした→すいませんでした

頭がパンクしました○rz

736 名前:名無し~3.EXE mailto:sage [2008/06/02(月) 00:30:58 ID:1WXTzPCh]
ちったあ推敲してから書き込め

737 名前:名無し~3.EXE mailto:sage [2008/06/02(月) 13:54:20 ID:3tN2UbSe]
睡魔だったんだろ?解るよ。

738 名前:名無し~3.EXE mailto:sage [2008/06/02(月) 17:53:55 ID:/+k/rMka BE:666238638-2BP(802)]
オリンピックも近い事ですしね…

739 名前:名無し~3.EXE mailto:sage [2008/06/03(火) 18:08:38 ID:7j2Uu5Ce]
ttp://ossan.fam.cx/up/uploda2/src/up0801.jpg

740 名前:名無し~3.EXE mailto:sage [2008/06/04(水) 15:09:56 ID:E/mtZnYt]
100個位のバッチを4個づつ走らせる方法を教えてください
具体的にいうと、XP homeでstartからのバッチでシングルスレッドのx264(とavisynth)を
よっつ同時起動して1つ終了するたびに1つ起動するようにしたいです
イメージとしては
start /min 000.bat
start /min 001.bat
start /min 002.bat
start /min 003.bat
:ここで条件判定
start /min 004.bat
:ここでも条件判定
start /min 005.bat
:ここでも...
start /min 006.bat
...
みたいな感じでやりたいです

/wait付けて4分割で良さそうですが、それぞれ計算量(計算時間?)は違うはずなので非効率的です
個々のバッチの最後に条件判定の種を仕込む方法もあると思いますが、もちろん同時に終了する可能性もあるので、それぞれのバッチでうまく同期?する必要が有ります
その辺も考慮した方法をお願いします。



741 名前:名無し~3.EXE mailto:sage [2008/06/04(水) 15:16:49 ID:MFKCUv/N]
モレはふつーに、100行あったら、25行づつ4枚のBATファイル書いてるけど。
特に問題無いよ。

742 名前:名無し~3.EXE mailto:sage [2008/06/04(水) 15:26:33 ID:E/mtZnYt]
オレも今まではそうだったんだけど、もっと賢くできないかなぁ?とか思ったけど
オレに出来る範囲だとomp使ってexe作る位しか思いつかなかったから、試しに聞いてみた

どうぞよろしく〜

743 名前:名無し~3.EXE mailto:sage [2008/06/04(水) 15:30:47 ID:znlAZcWV]
WSHでExec使えばえーがな

744 名前:名無し~3.EXE mailto:sage [2008/06/04(水) 15:41:12 ID:E/mtZnYt]
>>743
正規表現がどうかしたの?とかおもったけどww
調べてみたら割と簡単に出来そうで助かりました
ありがとうございましたノシ

745 名前:名無し~3.EXE mailto:sage [2008/06/04(水) 15:46:52 ID:E/mtZnYt]
訂正
X ありがとうございましたノシ
O ありがとうございましたm(_ _)m

746 名前:名無し~3.EXE mailto:sage [2008/06/04(水) 16:03:08 ID:mGvFQhiJ]
>>742
BATじゃなくて、AutoHotkeyやwshを使ったほうが確実だよ。起動したバッチの
PIDを監視して、それが消滅したら次のタスクへ、なんてのも数行でできる。

AutoHotkeyの例
Loop,100
 {
 cmd=やりたいこと%A_Index%.bat
 runwait %cmd%,,Hide,pid
 if errorlevel<>0
  msgbox,エラーでたよ。PID=%pid% errorlevel=%errorlevel% つづけたいならOK押せ
 }

「A_Index」は、ループ内で回った回数のこと。ループのたびに数値が1ずつ
上がっていくから、やりたいこと1.bat→やりたいこと2.bat→やりたいこと3.bat
・・・やりたいこと100.bat→END

と、順番に処理してくれる。
hideは、ウインドウを一切表示させない意味。pidは実行した際のpidが入る。
実行後、errorlevelが0以外なら、なんらかのエラーが出てるはずだから
そのときだけbeepを鳴らしたり、ダイアログを出すとかも可能。
エンコ用途なら、ダイアログを10秒以上放置したら自動で次の処理とかもできる。

このスレでも何度か出てるけど、いまどきBATをつかうのは
単独で起動させるプログラムにオプションを与えるための整理役と、
緊急時や、社内ポリシーの制限で「仕方なく」使うようなもの。

わかりにくくて制限だらけのBATをパズルのように使いこなすよりも、
もっと簡単に操作可能な方法を組み合わせたほうが効率的だよ。

747 名前:名無し~3.EXE mailto:sage [2008/06/04(水) 17:57:35 ID:B4CJCE84]
んなアホな。それだったら
「質問された事をコマンドライン以外でやろうとしたらどうなるか?」スレになってしまう

ここは「それでも時代遅れのコマンドラインでなんとかやろうとしたらどうなるか?」と追求したり、それを質問をするスレだわ
コマンドラインが時代遅れである事は聞いてる人の側でもむしろ前提
746方式だと、これから誰かが何か聞いてくるたびに、質問されても無い別のスクリプトを教えるつもりなのか?
お勉強発表会は否定しないがその該当スレでやるか?ソフ板の総合質問系のスレでやるヨロシ


748 名前:名無し~3.EXE mailto:sage [2008/06/04(水) 18:18:50 ID:mGvFQhiJ]
>>747
あーごめん。言葉足らずだった。

質問者が
>mp使ってexe作る位しか思いつかなかったから

ということだから、質問者のやりたいことだけを手っ取り早く
実現するなら、全部バッチでやるよりも簡単な方法があるよ、という話

749 名前:名無し~3.EXE [2008/06/04(水) 21:49:55 ID:7+YNsR+N]
すいません。教えて下さい。

ファイルをD&Dしたときにそれをコピーしてある名前にする
っていう単純なバッチが作りたいんですが
全角スペースを含む日本語ファイル名だとうまく動きません
いい解決方法ないでしょうか

@echo off
cd /d "%~dp0"

copy "%~1" temp.txt

echo Finish.
pause

750 名前:名無し~3.EXE mailto:sage [2008/06/04(水) 22:09:00 ID:iEWLl5O8]
>>749
>>488-495



751 名前:名無し~3.EXE mailto:sage [2008/06/05(木) 09:36:57 ID:lU41qR+3]
>>750
ありがとうございました
いろいろぐぐったんですがいい方法も見つからなかったので
スペースは手作業で消すことにします

752 名前:名無し~3.EXE mailto:sage [2008/06/05(木) 09:50:21 ID:wBw/Rao8]
set x=%2
if defined x (copy "%*" temp.txt) else copy %1 temp.txt

753 名前:名無し~3.EXE mailto:sage [2008/06/05(木) 10:27:50 ID:lU41qR+3]
>>752
あーなるほど
分離してしまうならつなげろってことですか
気付きませんでしたorz
ありがとうございました

754 名前:名無し~3.EXE mailto:sage [2008/06/05(木) 18:41:34 ID:wBw/Rao8]
>>740
set /a n=0
for /f "delims=" %%I in (list.txt) do call :run %%I
goto :eof

:run
for /f "skip=3 delims=" %%J in ('dir /b executing.*') do (
sleep 5
goto :run
)
set /a n+=1
type nul >executing.%n%
start cmd /c " %1 & del executing.%n%"
goto :eof


755 名前:名無し~3.EXE mailto:sage [2008/06/05(木) 22:03:49 ID:pkF1J8Bp]
毎日、画像を三十枚以上、縮小&リネームしています。
手作業はしんどいので、自動化しようと思いここにたどり着きました。
リネームはDOSプロンプトで出来ることが分かりました。
画像はWindows標準のPaintで縮小していましたが、DOSで同様の処理が出来ますでしょうか?
ただし、他のソフトをインストールできない環境です。標準のソフトとofficeしか入っていません。


756 名前:名無し~3.EXE mailto:sage [2008/06/05(木) 23:52:02 ID:BS+WRxse]
>>755
imagemagick使う。

インストールできないというのが実行ファイルを外部から持ってくるのも不可という場合は不可能と言うべきか?

厳密には不可能じゃないけど…

757 名前:名無し~3.EXE mailto:sage [2008/06/05(木) 23:52:10 ID:2RA2pd/j]
質問スレで反応がなかったのでこちらで質問させてください。補足ですが、XP PS3です。

660 名無し~3.EXE sage 2008/05/29(木) 20:36:57 ID:0+d669Zv
    net sendコマンドとmsgコマンドは何が違うのでしょうか?
    Messenger serviceを有効にしてnet sendは機能
    するのですが、msgコマンドは/server:で対象を指定しても
    "エラー [5]:アクセスが拒否されました。"となってしまいます。
    対象を*にするとローカルには表示されます。

758 名前:755 mailto:sage [2008/06/06(金) 05:15:08 ID:eZBPSYq8]
>>756
imagemagickは外部から持ってくることになるため、避けたいです。
厳密には不可能でないという方法をアドバイス頂けないでしょうか?


759 名前:名無し~3.EXE mailto:sage [2008/06/06(金) 12:52:46 ID:TZUSZeSd]
WSH使え

760 名前:名無し~3.EXE [2008/06/06(金) 18:20:54 ID:b+c7iV0l]
>>755
バイト雇え



761 名前:名無し~3.EXE [2008/06/07(土) 08:17:30 ID:9kLf9UVX]
ディスクの空き容量によって、処理(制御)の流れを変えるバッチファイルを
作りたいのですが、環境変数に空きディスク容量(ファイルのデータ)を
セットする方法が分かりません。
今考えている手順は、
dirの出力をファイルに落として、空き容量の文字列を抽出し、
それを環境変数にセットしてIF文で判定するというものです。

ちなみに、空き容量文字列の抽出は、
別のScript言語で作るしかないのでしょうか?

よろしくお願います。


762 名前:名無し~3.EXE [2008/06/07(土) 08:17:58 ID:9kLf9UVX]
ディスクの空き容量によって、処理(制御)の流れを変えるバッチファイルを
作りたいのですが、環境変数に空きディスク容量(ファイルのデータ)を
セットする方法が分かりません。
今考えている手順は、
dirの出力をファイルに落として、空き容量の文字列を抽出し、
それを環境変数にセットしてIF文で判定するというものです。

ちなみに、空き容量文字列の抽出は、
別のScript言語で作るしかないのでしょうか?

よろしくお願いします。


763 名前:名無し~3.EXE mailto:sage [2008/06/07(土) 13:40:11 ID:Ep8IequY]
>dirの出力をファイルに落として
for /f使え
詳しくはfor/?

>空き容量文字列の抽出は
findかfindstr使え
詳しくはfind/?かfindstr/?


764 名前:762 [2008/06/07(土) 14:41:58 ID:9kLf9UVX]
>>763
レスありがとうございます。
制御変数へのセット(IF文での判定)はどうすれば良いのでしょうか?
ここが一番悩みなんですが・・・



765 名前:名無し~3.EXE [2008/06/07(土) 14:50:39 ID:6Y503noJ]
あるプログラムを互換モードで動作させる場合、エクスプローラからそのプログラムを
右クリックして、プロパティから互換性タブを開いて設定すると思います。

この作業をコマンドラインから行いたいのですが、どなたか方法をご存知ありませんか。


766 名前:名無し~3.EXE mailto:sage [2008/06/07(土) 16:51:57 ID:Ep8IequY]
>制御変数へのセット(IF文での判定)はどうすれば良いのでしょうか?
for /f使え
詳しくはfor/?

767 名前:名無し~3.EXE mailto:sage [2008/06/07(土) 18:08:56 ID:616T7vii]
>>766
部外者だが、知ってるなら具体的に**オプション使えばできる、とか書いてよ。
そんなオウム返しみたいなレス、スレが汚れるだけだからいらんよ

768 名前:名無し~3.EXE mailto:sage [2008/06/07(土) 18:22:09 ID:EguiI6zR]
答え: /f

769 名前:762 [2008/06/07(土) 21:23:09 ID:9kLf9UVX]
>>766、767、768
レスありがとうございます。
for /fしか、ないということですね。

770 名前:名無し~3.EXE mailto:sage [2008/06/07(土) 22:56:00 ID:Ep8IequY]
サンプルコード欲しければ、
pc11.2ch.net/test/read.cgi/win/1176558776/
で^Fしてfor /fを検索すればいくらでも見つかるよ



771 名前:762 [2008/06/08(日) 11:22:44 ID:1NIPO+wf]
for /fは分かったのですが、数値比較がうまくいきません。
if文で、数字が小さいと正しく比較されますが、
数字が大きくなると正しく比較されません。

例えば 1000 leq 800は、偽ですが、
100000000000 leq 80000000000は、真になります。
どうすれば良いのでしょうか?


772 名前:名無し~3.EXE mailto:sage [2008/06/08(日) 11:26:09 ID:yG6GqC1B]
桁削れ
set /?

773 名前:762 [2008/06/08(日) 14:02:03 ID:1NIPO+wf]
>>772
レスありがとうございます。
なんとか出来ましたm(_ _)m

774 名前:名無し~3.EXE mailto:sage [2008/06/08(日) 19:37:43 ID:kTIPTXhe]
setで=を置換できない?
set a=b=c
echo %a:==d%
==d%
の使い方が誤っています。
echo %a:^==d%
b=c


775 名前:名無し~3.EXE [2008/06/08(日) 22:08:48 ID:/UhiE58u]
>>774
ちゃんとできてるじゃないの。何が問題なの?

776 名前:名無し~3.EXE mailto:sage [2008/06/08(日) 23:25:48 ID:xSF5tFgW]
置換出来てるようには見えないがww
774がaの値がb=cとか錯覚しやすい変な例を上げてるせいだが
set a==

echo %a:==置%
echo %a:^==置%
どのやりかたでもダメだったと言いたいのだと思う

答えはシラネw

777 名前:名無し~3.EXE mailto:sage [2008/06/09(月) 01:25:45 ID:ChRGygE7]
>>755
画像をUSBメモリで持ち帰ってフォトショップのマクロでやる
exeの持ち込みはダメなのにbatはいいってのがよくわからん管理状況だな
せめてOfficeとか入ってないの?VBA使えばそれこそなんでもできるよ

778 名前:名無し~3.EXE mailto:sage [2008/06/09(月) 01:29:52 ID:2VVefUuT]
>>777
よく嫁
> 標準のソフトとofficeしか入っていません。


779 名前:名無し~3.EXE mailto:sage [2008/06/09(月) 03:03:11 ID:ChRGygE7]
すまん。素で読み落としてたわ。

780 名前:名無し~3.EXE [2008/06/13(金) 08:48:10 ID:jt91+Q1n]
バッチ処理(〜.bat)をログオン時起動するように、
設定したのですが、うまく実行されません。
OSはVistaで、タスクスケジューラで状態を見ますと、
「起動中」になっていますが、
バッチ処理の中で、処理が始まると表示するように
記述しているechoメッセージが表示されません。

原因と対策を教えて下さい。
よろしくお願いします。




781 名前:名無し~3.EXE mailto:sage [2008/06/13(金) 11:21:22 ID:z034p4t+]
ログオン時起動するように設定した方法とechoメッセージまでのバッチの内容は?

782 名前:780 [2008/06/13(金) 19:38:13 ID:jt91+Q1n]
>>781
レスありがとうございます。

設定等は以下の通りです。よろしくお願いします。


1.タスクスケジューラの

[全般]→[ユーザがログオンしているかどうかにかかわらず実行する]
    をチェック
[トリガ]→[タスクの開始]を[ログオン時]
    →[特定のユーザ/グループ]をチェック
[操作]→[プログラムの開始]
    バッチファイルのパス名、ファイル名指定

2.バッチファイルの内容は

@echo off
echo テスト
  :

です。

あと、関係があるかどうか分かりませんが、
[コントロールパネル]の[タスクのスケジュール]の盾マークがついてます。

783 名前:名無し~3.EXE mailto:sage [2008/06/13(金) 21:55:16 ID:eSs07QtP]
一瞬で終わってるから気づかないだけとかいうオチはないよね

784 名前:名無し~3.EXE mailto:sage [2008/06/14(土) 14:16:39 ID:2LQf8VmF]
MB温度、CPU温度、HDD温度をコマンドラインで取得したいです。
Wmic.exeというのが使えそうなのですが、使い方がいまいち分かりません。
わかるから、教えてください。

785 名前:780 [2008/06/14(土) 17:07:22 ID:pWOjAg5F]
>>783
レスありがとうございます。

「echo テスト」の次をpauseにしてますので、
気づかないうちに終わったということはありません。

786 名前:名無し~3.EXE mailto:sage [2008/06/14(土) 19:12:47 ID:gykffnVR]
>>785
そもそもログイン前に実行したコマンドラインの内容って
ログイン後に表示されるの?

出かけてるから試せないけど、ファイルつくるようなバッチだったら
どんな動きしてる?

787 名前:786 mailto:sage [2008/06/14(土) 19:15:56 ID:HScNwkhv]
ログイン前、じゃなくってデスクトップ表示前、ですねorz


788 名前:名無し~3.EXE mailto:sage [2008/06/14(土) 20:43:48 ID:ZCY+j6Iz]
うごいてるのか、
うごいてないのか。
うごいてるのに目に見えないだけなのか。
問題の切り分けをしろ。

ECHO %DATE% %TIME% うんこヤロー>>UNKO.log

789 名前:名無し~3.EXE mailto:sage [2008/06/14(土) 22:05:03 ID:HQrnnlE5]
>>780
>「起動中」になっていますが、

の原因は

>「echo テスト」の次をpauseにしてますので、


790 名前:780 [2008/06/15(日) 16:48:01 ID:HulyKHru]
レスありがとうございます。

ECHO %DATE% %TIME% うんこヤロー >>…を
echo テストの前に入れてみましたが、
ファイルには何も書かれていません。

要求時に実行をチェックして、[操作]→[実行]すると、
タスクスケジューラの状態は実行中に変わりますが、
やはり、ファイルには何も書かれていません。

よろしくお願いします。








791 名前:名無し~3.EXE mailto:sage [2008/06/15(日) 17:48:49 ID:Wz6x2KJY]
>>790
そもそも、そのバッチをコマンドラインで実行したら、どうなる?

792 名前:名無し~3.EXE mailto:sage [2008/06/15(日) 19:23:45 ID:JgbyKUVJ]
「ファイルには何も書かれていません」ってのが本当かどうか怪しいな。
出力先に、ちゃんと絶対パスとドライブ名は入れてる?

書けないと言っておきながら、tempディレクトリとかに
しっかり書き込まれて、気づかない事例はよくある

793 名前:790 [2008/06/16(月) 16:12:54 ID:jtToNX4P]
>>791,792
レスありがとうございます。

コマンドラインで実行しても、バッチファイルをダブルクリックしても
正しく実行されます(ファイルに日付等が出力され、次のechoコマンドの
メッセージが表示され、「続行するには何かキーを押してください・・・」
が表示されます(pause))。

echo、pauseコマンドが処理されているのにメッセージ表示等が
正しく行われていないのか、そもそも処理されていないのかを
切り分けるためにファイル出力コマンドを入れています。

ファイルに書き込まれていることに気付かないだけで、
ファイル出力コマンドの処理が正常に行われていて、
次の「echo テスト」「pause」コマンドが正しく処理されない
というのは考えにくいのではないでしょうか。

ちなみに、タスクスケジューラでのバッチファイルのパス指定は
次のようになっていますが、問題はないでしょうか

C:Users\アカウント名\バッチファイル名





794 名前:名無し~3.EXE mailto:sage [2008/06/16(月) 16:41:46 ID:qoH3tLVW]
なんで相対パス……

795 名前:名無し~3.EXE mailto:sage [2008/06/16(月) 21:06:26 ID:TXDKiHGf]
どこが相対パス?

796 名前:名無し~3.EXE mailto:sage [2008/06/16(月) 21:15:01 ID:dK6gjggp]
>>793
Vistaで実行してるようですけど
リダイレクト先はどこにしてますか?

権限をどう設定してるか分からないけど
C:\Users以下はUACの影響を受けたはずなので
その位置に書かれるか保証できないかも

Dドライブあたりにディレクトリ切ってみて
そこで試してみたらどんな結果になります?


797 名前:796 mailto:sage [2008/06/16(月) 22:40:05 ID:dK6gjggp]
>>790
せっかくなので試してみました。(Vista-Ultimate x64)

こんなバッチをタスクスケジューラに登録。

echo | cd >> D:\test\aa.txt
echo %date% %time% >> test.txt
echo %date% %time% >> C:\Users\AcctName\test.txt
echo %date% %time% >> D:\test\test.txt

Dドライブにtestディレクトリを切って再ログイン。

C:\Users\AcctName\ にはファイルは見あたらず
D:\test内のほうは
 C:\Windows\system32
 2008/06/16 22:24:59.01
の2行が生成。

別ディレクトリを絶対パス指定しないとダメですね。
(C:\Windows\system32にもファイルなし)
それからログイン時のタスクで実行したタスクは
ログイン後のデスクトップ上に表示されない模様。
Pauseは意味ないみたい。


798 名前:名無し~3.EXE mailto:sage [2008/06/17(火) 02:07:19 ID:zYoM/dJA]
相対パス

799 名前:790 [2008/06/17(火) 13:58:01 ID:zwWahSzn]
>>797
レスありがとうございます。

ファイルが作成されない原因は分かりました。
ところで、本来やりたい「デスクトップへechoメッセージを
表示してpauseで待つ」という処理が、
ログイン時タスクで出来ないとすると、どうすれば良いのでしょうか?
ログイン直後に自動起動してデスクトップへメッセージを表示して
キー入力を待つという処理はコマンドラインではできないのでしょうか?




800 名前:名無し~3.EXE mailto:sage [2008/06/17(火) 14:26:27 ID:xgz+vgOu]
普通にスタートアップに登録すればいいんじゃね?



801 名前:名無し~3.EXE mailto:sage [2008/06/17(火) 16:35:18 ID:zYoM/dJA]
>ファイルが作成されない原因は分かりました。

802 名前:名無し~3.EXE mailto:sage [2008/06/17(火) 17:46:07 ID:1+L0u5+w]
教えて下さい。
あるフォルダの画像ファイルのうち特定の物だけその日の日付+01.jpgのような二桁の連番にrenameしたいと思っています。1-9までは良いのですが10以降は三桁になってしまいどう対処すればいいのか判りません。よろしくお願いします。

@echo off
set /a N=1
:LOOP
for %%A in (abc*.jpg) do rename %%A %date:/=%0%N%.jpg > nul
if "%N%"=="99" (goto EXIT)
set /a N=N+1
goto LOOP
:EXIT

803 名前:名無し~3.EXE mailto:sage [2008/06/18(水) 04:30:39 ID:Xiqhpdl5]
> ファイルが作成されない原因は分かりました。

原因を説明せーよ。

> ログイン時タスクで出来ないとすると、どうすれば良いのでしょうか?

スタートアップ入れればいいじゃん。

804 名前:名無し~3.EXE mailto:sage [2008/06/18(水) 10:13:29 ID:NUy0S7AO]
コマンド補完で、bashやnyacusのように候補一覧を並べるのではなく、
zshのように候補を次々に表示していくシェルがあれば教えて下さい。

こんな感じでできればいいなと思う例
環境変数path内に、「testcommand01.exe」、「testcommand02.exe」がある場合
testと打ち込み TABを1回打つと、testcommand01.exeが表示され、
もう一度TABを打つとtestcommand02.exeが表示されるような感じ。

805 名前:804 mailto:sage [2008/06/18(水) 10:19:18 ID:NUy0S7AO]
すみません、よーく確認したらnyacusで、ほぼ同様の事ができるのでnyacus使わせてもらいます。

806 名前:790 [2008/06/18(水) 19:57:52 ID:kUYKhkJk]
>>803
レスありがとうございます。

表現が不適切でした。原因は理解できていません。
C:\Users\アカウント名の直下にバッチファイル等を置くと
ファイルに出力されないが、D:\等のドライブ名の直下に置くと
ファイルが出力される事が分かったという事です。

あと、スタートアップ時でも、現象は同じで、
echoメッセージはデスクトップには出力されません。

ログイン時に表示されないのは、OSの不具合なんでしょうか?
(ログイン後ダブルクリックで起動したら、表示されますので)

807 名前:名無し~3.EXE mailto:sage [2008/06/18(水) 21:26:17 ID:kMRIsu4a]
>>793 の相対パスは絶対パスに直したのかよ?


808 名前:名無し~3.EXE mailto:sage [2008/06/18(水) 21:28:03 ID:xcv3f3Vr]
>>806
まずは切り分けしてみては?

スタートアップでもダメらしいですが
遅延時間を設定してデスクトップ表示後に
実行してみたり、時間指定で動かすと
どんな挙動かを観てみてはどうでしょう



809 名前:名無し~3.EXE mailto:sage [2008/06/18(水) 21:53:26 ID:tm0Mfzl7]
女『車のエンジンがかからないの…』
俺『バッテリーかな?ライトは点く?』
女『昨日はちゃんと動いたんだけど…』
俺『バッテリーかどうか知りたいんだけどライトは点く?』
女『今日は○○まで行かなきゃならないから車を使えないと…』
俺『んでライトは点く?』
女『前に乗ってた車ではこんな事無かったのに…』
俺『ライトは点く?点かない?』
女『○時に約束だからまだ時間はあるけど…』
俺『死ね』



女『ECHOが出力されないの…』
俺『パスかな?絶対パスは点けてる?』
女『スタートアップ後はちゃんと動いたんだけど…』
俺『パスかどうか知りたいんだけどパスは点けてる?』
女『今日はpingしたいからECHOを使えないと…』
俺『んでパスは点けてる?』
女『前に使ってたPCではこんな事無かったのに…』
俺『パスは点けてる?点けてない?』
女『pauseで待つ約束までまだ時間はあるけど…OSの不具合なのかな?』
俺『死ね』

810 名前:名無し~3.EXE [2008/06/18(水) 22:46:26 ID:kDIrIy9i]
テキストファイルの50行目から、前後10行(40-60行まで)
別ファイルにリダイレクトするって、コマンドプロンプトで
出来ますか?



811 名前:810 mailto:sage [2008/06/18(水) 22:49:13 ID:kDIrIy9i]
すみません。環境は2K/XPです。
出来ればNT4にも対応してると嬉しいです

812 名前:名無し~3.EXE [2008/06/19(木) 00:20:42 ID:o/4A0OYu]
unixのteeみたいに画面出力しつつファイルに落とすのってDOSでできますか?

813 名前:名無し~3.EXE mailto:sage [2008/06/19(木) 00:32:47 ID:yke/11qL]
どこからか tee.exe をダウンロードして使うしか無いやろ。

814 名前:名無し~3.EXE mailto:sage [2008/06/19(木) 00:33:42 ID:yke/11qL]
>>809
そのコピペ、おもしろい。名前を付けて保存・・・っと。

815 名前:名無し~3.EXE mailto:sage [2008/06/19(木) 00:51:15 ID:o/4A0OYu]
>>813
つまり、デフォルトでは無理ということですか

816 名前:名無し~3.EXE mailto:sage [2008/06/19(木) 01:58:58 ID:lAQJD2cS]
@if(0)==(0) echo off
cscript //Nologo //E:JScript "%~f0" %*
goto :EOF
@end
var FSO = new ActiveXObject("Scripting.FileSystemObject");
var ForAppending = 8;
var CreateIfNotExist = true;
var OverWriteIfAlreadyExist = true;
function write_file(filename, text, append_mode) {
var file_stream;
if(append_mode) file_stream = FSO.OpenTextFile(filename, ForAppending, CreateIfNotExist);
else file_stream = FSO.CreateTextFile(filename, OverWriteIfAlreadyExist);
file_stream.Write(text);
file_stream.Close();
}
function main(args) {
var append_mode = false;
var i = 0;
if(args[0]=="-a") {
append_mode = true;
i = 1;
}
var text = WScript.StdIn.ReadAll();
WScript.StdOut.Write(text);
for(; i<args.length; i++) {
var filename = args[i];
write_file(filename, text, append_mode);
}
}
var args = new Array();
for(var e=new Enumerator(WScript.Arguments); !e.atEnd(); e.moveNext()) args[args.length] = e.item();
main(args);

817 名前:名無し~3.EXE [2008/06/19(木) 03:12:35 ID:Qc85Wdgr]
当日のイベントログの内容をCSV形式か、TXT形式で吐いてくれるバッチって作れますでしょうか?
EVENTQUERY調べていたのですが・・・
イベントログ取りたいサーバーが、Windows NT Server および Windows 2000 Serverなので使えないみたいでした。。。

その他のフィルタリングもできたらありがたいですが、できなければその後加工します。

ヒントだけでもかまいませんので よろしくお願いいたします。

818 名前:802 mailto:sage [2008/06/19(木) 08:08:58 ID:+4JJC5K4]
判りました。1-9と10以上で条件わけすればよいのは判っていたのですが、
なぜかうまく反映されなかったのが書き直したらうまくいきました。
お騒がせしました。

819 名前:名無し~3.EXE mailto:sage [2008/06/19(木) 10:44:22 ID:IU2H2q9l]
>>810
前スレ833あたりでしてたよ。NT4に対応しているかは微妙。
あと、head.exeとtail.exeを持ってくれば楽にできる。

820 名前:名無し~3.EXE mailto:sage [2008/06/20(金) 02:14:08 ID:Tro/Oyn2]
>>816
それじゃだめだろ
>画面出力しつつ



821 名前:名無し~3.EXE mailto:sage [2008/06/20(金) 13:43:58 ID:Tro/Oyn2]
powershellのstart-transcriptはどうだろ?

822 名前:名無し~3.EXE mailto:sage [2008/06/20(金) 21:44:21 ID:NAkOQzpa]
>820
出来るはずなんだが…。
>816は標準出力と、引数に指定したファイルに書き出すコードだぞ?
標準出力をリダイレクトしたら表示されないかも知れんが…。

823 名前:名無し~3.EXE mailto:sage [2008/06/21(土) 01:32:25 ID:LKJW76Gj]
>しつつ


824 名前:名無し~3.EXE mailto:sage [2008/06/21(土) 14:52:10 ID:k6N4oqjE]
>>822
816って
dir *.* | tee.bat log.txt
みたいな使い方するもんだよね?

ちゃんと継続的に画面出力をログに出力してくれてるが…

進行度みたいな同じ行で更新されるタイプの出力を画面表示と同じように出力できるものってないかな。
これはtee.exeでも同じなんだけど、
1%
2%
3%

100%
みたいに更新される毎に改行されてしまうんだな。

825 名前:名無し~3.EXE mailto:sage [2008/06/21(土) 16:03:44 ID:zfiUXgMk]
hoge | tee.bat log.txt

hogeが終了するまで画面に出て来ないだろ?

826 名前:名無し~3.EXE mailto:sage [2008/06/21(土) 17:16:28 ID:gMbL69mY]
>>824
title使えばいいじゃん

827 名前:824 mailto:sage [2008/06/21(土) 18:23:16 ID:k6N4oqjE]
ごめん勘違い。>>816の奴ダメだわ。

今までtee.exeを使ってた場所を816ので書き換えてやってみたつもりだったんだが
ちゃんと書き換わってなかった。tee.exeの動作を816の奴の動作と勘違いしていた。
書き換えたらダメだった。使えん。

>>826
進行度を出力してるのは自分が作ったバッチじゃなくて別の実行ファイルなんだ。
だからタイトルに進行度を表示するってわけにはいかない。

コマンドライン型のアンチウィルスとか、アーカイバのログを取ろうとしてるんだ。
今は一旦冗長なログを出力してからいらないところを削除したりしてる。

828 名前:名無し~3.EXE mailto:sage [2008/06/21(土) 19:53:34 ID:zfiUXgMk]
readallやめてread(1)でぐるぐる回せ

829 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 13:15:13 ID:0z5/ZZHn]
ああ「しつつ」なのか。
ちょっと書き換えれば可能だが…やってみようかな。

830 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 14:05:37 ID:0z5/ZZHn]
こんなもんか?
@if(0)==(0) echo off
cscript //Nologo //E:JScript "%~f0" %*
goto :EOF
@end
Array.prototype.shift = function() {
    var r = this[0];
    for(var i=1; i<this.length; i++)
        this[i-1] = this[i];
    this.length--;
    return r;
}
var FSO = new ActiveXObject("Scripting.FileSystemObject");
var args = new Array();
for(var e = new Enumerator(WScript.Arguments); !e.atEnd(); e.moveNext())
    args[args.length] = e.item();
var append_mode = false;
if(args[0]=="-a") {
    append_mode = true;
    args.shift();
}
var files = new Array();
while(args.length > 0)
    files[files.length] = (append_mode ? FSO.OpenTextFile(args.shift(),8,true)
                : FSO.CreateTextFile(args.shift(),true));
while(!WScript.StdIn.AtEndOfStream) {
    var c = WScript.StdIn.Read(1);
    WScript.StdOut.Write(c);
    for(var i=0; i<files.length; i++) files[i].Write(c);
}
for(var i=0; i<files.length; i++)
    files[i].Close();



831 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 14:31:26 ID:rv6IXUVV]
俺みたいなバッチしかやったことのない無能人間には、
wshの行間で何をやってるかわからないので、解説頼む

832 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 14:47:47 ID:0z5/ZZHn]
ID:zfiUXgMk の指摘を元に >816 を改造しただけだよ

833 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 20:53:55 ID:EzLG1D0g]
流れぶった切ってすまんが
CUI上で
複数のコマンドを同時に宣言する時って&っすよね?
at 21:00 /interactive /every:M,T,W,Th,F "C:\TV.exe"&sutdown -s -t 10
みたいな感じで

834 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 21:04:03 ID:wbGXdlDD]
転載

条件付き処理記号を使うと、同じプロンプトから複数のコマンドを実行して、コマンドの実行結果に基づいてコマンドを実行できます。

アンパサンド (&) は、単一のコマンド ライン上で複数のコマンドを区切ります。
かっこは、複数のコマンドをグループ化します。
セミコロン ( ; ) またはカンマ ( , ) は、コマンド パラメータを区切ります。
キャレット (^) を使うと、コマンド記号をテキストとして使用できます (その記号の特殊な意味は無視されます)。
二重のアンパサンド (&&) を使うと、この記号の後に続くコマンドは、記号の前のコマンドが成功した場合にだけ実行されます。
二重のパイプ (||) を使うと、この記号の後に続くコマンドは、記号の前のコマンドが失敗した場合にだけ実行されます。


835 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 21:33:01 ID:EzLG1D0g]
ありがと 惚れたました

836 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 21:36:29 ID:FTwpBN7+]
>>830
素朴な疑問なんだけど、
Arrayクラスが元からもってるshiftメソッドをわざわざ定義しなおしたり、
せっかくEnumerator作ってるのにいったん配列に入れなおしたりしてるの
は何故?


837 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 21:39:41 ID:EzLG1D0g]
あと○秒後に、○○コマンドを実行するっていうのはできるんですかね?
shutdown -t 10
とかは使えるのはわかるんですが
例えば、cd \を10秒後に行うとかってできるんですかね?

838 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 21:47:03 ID:ZzemjZm6]
>>834
こいつは便利だ、横からサンクス

839 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 22:19:13 ID:rv6IXUVV]
>>837
pingを自分宛に10回叩く

840 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 22:20:49 ID:EzLG1D0g]
>>839
やっぱりディレイコマンドっていうのはないんですね・・



841 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 23:51:37 ID:F/aJ8ivT]
>>836
そっとしといてやれよ。

842 名前:名無し~3.EXE mailto:sage [2008/06/23(月) 23:53:35 ID:iWmWdG24]
>837
clock.aviを再生して終わるのを待つ

843 名前:名無し~3.EXE mailto:sage [2008/06/24(火) 02:32:30 ID:pW0iI2Ae]
Sleep.exe: Batch File Wait

> sleep /?
Usage: sleep time-to-sleep-in-seconds
sleep [-m] time-to-sleep-in-milliseconds
sleep [-c] commited-memory ratio (1%-100%)

rktools.exeでタダで配布されているmicrosoft公式サイト


844 名前:名無し~3.EXE mailto:sage [2008/06/24(火) 03:10:57 ID:SZVTbtHo]
日本語大丈夫ですか?

845 名前:名無し~3.EXE mailto:sage [2008/06/24(火) 03:38:54 ID:pW0iI2Ae]
めんどくさいから主語と助詞を抜いてるのもわからないのか
行間補完しろアホ

こんな糞スレにキチガイ粘着がいるとは思わなかった
今後このスレでは二度と教えないから
Sleep.exeはrktools.exeでタダで配布されている。microsoft公式サイトで


846 名前:名無し~3.EXE mailto:sage [2008/06/24(火) 03:45:54 ID:pW0iI2Ae]
ていうかSleep.exe rktools.exe マイクロソフト公式

必要なキーワードはすべて網羅されてるからそれでわからなかったら人辞めろ
わかってるのに揚げ足取りやってるなら、クズ人間

847 名前:名無し~3.EXE mailto:sage [2008/06/24(火) 04:00:37 ID:dCCpwkqH]
スレ住民 -1 

848 名前:名無し~3.EXE mailto:sage [2008/06/24(火) 06:40:47 ID:rR1+Tu8K]
>836
前者は古いバージョン用。今のバージョンなら要らん。
後者は単に俺が Enumerator 苦手なだけw 是非書き直してくれ

849 名前:名無し~3.EXE mailto:sage [2008/06/24(火) 12:32:47 ID:unYk+kQr]
>>837
--- sleep.vbs ---
WScript.Sleep WScript.Arguments(0)*1000
---------------

C> cscript //nologo sleep.vbs 10&cd \

850 名前:名無し~3.EXE mailto:sage [2008/06/24(火) 14:06:46 ID:SZVTbtHo]
>>845
このスレの住人ならsleep.exeなんてあえて指摘されるまでもないでしょう。

それより本当に大丈夫ですか?

頭。



851 名前:名無し~3.EXE mailto:sage [2008/06/24(火) 23:39:56 ID:p7Sm4rkZ]
おまいこそだいじょぶか。変な犯罪に走ったりすんなよ。

852 名前:名無し~3.EXE [2008/06/24(火) 23:47:18 ID:DPjkb0o1]
start /b aaa.exe
start /b bbb.exe
start /b ccc.exe

という風に同時にコマンドを起動したあと、

すべてが終了するのを待って

eee.exe

を実行したいんですけど
どうすればいいですか?

unixだったらwaitで待てるんだけど

853 名前:名無し~3.EXE mailto:sage [2008/06/24(火) 23:55:53 ID:pJKSc5OV]
>>852
>>754

854 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 01:08:25 ID:pX/hdHEz]
>>852

help start でヘルプを読め

855 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 01:42:30 ID:6hXZ5y2y]
>>854
/wait のことだったらこの場合使えないと思いますが・・

>>853
754を参考にしてみようとおもうんだけど

start /b コマンド の前後にexecutingファイルの作成と削除を入れたいんですが、

start /b type nul > executing.1 & command1 & del executing.1

という風に書いても、DOSの場合は、順番に実行されるわけではないんですか?

856 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 12:14:25 ID:o+wlXfey]
tasklistを回して終了を監視すればいい

857 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 15:11:52 ID:Kh4xTa8p]
それぐらいならwsh使うわ

858 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 16:57:52 ID:pX/hdHEz]
Set WshShell = CreateObject("Wscript.Shell")
Set a = WshShell.Exec("notepad.exe a.txt")
Set b = WshShell.Exec("notepad.exe b.txt")
Set c = WshShell.Exec("notepad.exe c.txt")

Do While a.Status = 0 Or b.Status = 0 Or c.Status = 0
WScript.Sleep 1000
Loop
Set d = WshShell.Exec("msg * うんこ")


859 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 17:38:22 ID:pX/hdHEz]
@echo off
start /B copy nul executing.1 ^& notepad ^& del executing.1
start /B copy nul executing.2 ^& notepad ^& del executing.2
start /B copy nul executing.3 ^& notepad ^& del executing.3
:1
cscript //nologo sleep.vbs 1
if exist executing.1 goto 1
if exist executing.2 goto 1
if exist executing.3 goto 1
msg * うんこ

・・・ sleep だけは、バッチじゃ無理。どっかから探してくるか、>>849 使う

860 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 19:56:59 ID:/gx/69id]
正直sleep.vbsじゃ
そのディレクトリ内にそのbatかvbsファイルないとできないじゃん



861 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 19:58:40 ID:3V52NKTC]
低負荷の音声ファイルを再生させるとかで1つ

862 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 21:27:48 ID:Kh4xTa8p]
ping.exe localhost -n 1

863 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 22:34:08 ID:pX/hdHEz]
>>860
頭は生きてるうちに使うもの。

echo WScript.Sleep WScript.Arguments(0)*1000>sleep.vbs


864 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 22:44:15 ID:S0FVI1+e]
>>863
感動した

865 名前:名無し~3.EXE mailto:sage [2008/06/25(水) 22:55:12 ID:+Awhs3oR]
>>858
>>859

ほんとありがとうございます。

sleepはvbsでごまかすようにして、コマンド群は一括で定義できるように
以下のように改造してみました。

しかしcalcがないと怒られて終わってしまいます。何が悪いんでしょう??


@echo off
set com=( calc notepad )
for /f %%I in %com% do start /B copy nul executing.%%I ^& %%I ^& del executing.%%I
:1
set /a wtime=1*1000
echo WScript.Sleep %wtime% > tmp.vbs
cscript //NoLogo tmp.vbs

if exist executing.* goto 1
del tmp.vbs
echo END


866 名前:名無し~3.EXE mailto:sage [2008/06/26(木) 00:05:55 ID:bEvl4gH4]
calc | notepad & echo 終わった

867 名前:名無し~3.EXE mailto:sage [2008/06/26(木) 00:43:51 ID:rFcP4Uj1]
カレントにあるファイル

a_1.txt
a_2.txt
a_3.txt
a_4.txt



b_1.txt
b_2.txt
b_3.txt
b_4.txt

にリネームしたいんだけど、

for でちょちょっとできないでしょうか

868 名前:名無し~3.EXE mailto:sage [2008/06/26(木) 01:20:04 ID:ak00y0pl]
わざわざfor /l %i in (1,1,4) do ren a_%i.txt b_%i.txtなんてやらんでもren a_?.txt b_?.txtでいいじゃん

869 名前:名無し~3.EXE mailto:sage [2008/07/01(火) 01:23:41 ID:06PZ+BPo]
すんません
コマンドの標準出力を変数にセットするにはどうすればいいですか?

ちなみに
aaaa
というプロセスがいるかを確認するために

tasklist | find "aaaaa"
の結果を変数にぶちこんで、その変数がNULLかどうかで判定しようと考えています。

870 名前:名無し~3.EXE mailto:sage [2008/07/01(火) 02:03:30 ID:TyLpt1NP]
tasklist | find "aaaaa" > unko.txt
for %%I in (unko.txt) do if %%~zI == 0 echo ぬるぽ



871 名前:名無し~3.EXE mailto:sage [2008/07/01(火) 10:10:45 ID:GuapWfI5]
パイプ使ってfindなんかする理由がよくわからんが、こんなんでええちゃうの
for /F "tokens=1 delims= " %%i in ('tasklist.exe') do if "%%i"=="aaaaa.exe" (echo=aaaaa.exeを見つけた)

872 名前:名無し~3.EXE mailto:sage [2008/07/01(火) 13:03:00 ID:NO9OOEqz]
if errorlevel 1だろ?

873 名前:名無し~3.EXE mailto:sage [2008/07/02(水) 00:45:21 ID:3rsfgc1I]
tasklist | find "aaaaa" && echo ぷげら!

874 名前:名無し~3.EXE mailto:sage [2008/07/02(水) 00:52:12 ID:yIB7/qFo]
>>871
そういう風にやるなら、

for /f %%i in ('tasklist /fi "imagename eq aaaaa.exe" /nh') do @echo %%iを見つけた

までやった方がいいかな

875 名前:名無し~3.EXE mailto:sage [2008/07/02(水) 17:21:27 ID:OMuiQSzS]
tasklistがないお

876 名前:名無し~3.EXE mailto:sage [2008/07/02(水) 21:09:37 ID:HUBiufFo]
windows2000でnetshを使って、IPアドレス設定バッチを作ったんですが、
LANケーブルが抜けている状態だと正常に変更できません。

もろもろの事情でLANケーブルが抜けている状態でも変更できるように
したいのですが、どうすればよいでしょうか?

877 名前:名無し~3.EXE mailto:sage [2008/07/03(木) 06:48:55 ID:S7B7seB5]
>>876

Windows で TCP/IP のメディア検出機能を無効にする方法
ttp://support.microsoft.com/kb/239924/ja

試してはいないんだが、多分このあたり


878 名前:名無し~3.EXE mailto:sage [2008/07/03(木) 08:48:56 ID:9ohMIDqz]
>>875
実は俺もXPhomeだから長らくTasklist.exeが無かったがネットでもらって来た
www.computerhope.com/download/winxp.htm

マイクロソフトのどこかでも落とせるらしいがそのURLは知らない
(こう書けば誰かが貼るかな)
あそこのダウンロードサイトは迷路のようになっていて、ビルゲイツ会長でさえブチ切れさせる場所だから
なるべく近寄らないようにしている
www.technobahn.com/cgi-bin/news/read2?f=200806270311&page=2


879 名前:名無し~3.EXE mailto:sage [2008/07/03(木) 11:47:27 ID:KH9cTY/t]
SPから抜けよ

880 名前:名無し~3.EXE mailto:sage [2008/07/03(木) 18:25:54 ID:m7fH+sfP]
フォルダであるかどうかをどうやって調べますか。



881 名前:876 mailto:sage [2008/07/03(木) 22:22:33 ID:JNY6wKZ3]
>>877
試してみたところ変更できました。
できればレジストリをいじらずに変更できるようにしたいんですが、
可能でしょうか。(レジストリをいじることに抵抗があるもので・・・)



882 名前:名無し~3.EXE mailto:sage [2008/07/03(木) 22:48:45 ID:JG6UUf4I]
>>880
NUL を使え。

IF EXIST C:\うんこ\NUL ECHO ちんこ

883 名前:sage mailto:sage [2008/07/03(木) 23:17:01 ID:EKdOSVCV]
>>882
こんな技があるとは...
助かりました。あざす。

884 名前:877 mailto:sage [2008/07/04(金) 06:21:02 ID:Egjxu5mx]
>>881

MSがオフィシャルなサイトでレジストリをいじれと言ってるわけなんで、
他の手はないものと思われ。
もしGUIとかがあったとしても、いずれにせよ内部的にはレジストリの
同じエントリが変更されるんだろうし。
複数台で変更するのが面倒とか自分以外の人間にやらせるのが不安とかなら、
.regファイルを作るのが正解な気が。


885 名前:名無し~3.EXE mailto:sage [2008/07/05(土) 00:18:46 ID:XqKTTUMO]
このスレとム板のバッチスレってどっちがレベル高いの?

886 名前:名無し~3.EXE mailto:sage [2008/07/05(土) 00:54:45 ID:EUfbIAK/]
 |      ──/ __/_ \  __|__ヽヽ /
 |        ∠    /  \ \    |     / ̄ ̄/ ̄ ̄
 |          \   /   /     / | \      /
 \_/   α/     /          |       /


887 名前:名無し~3.EXE mailto:sage [2008/07/05(土) 01:05:41 ID:C3DX+t/z]
こっちのほうが高い。というか住人がみんな冷静

888 名前:名無し~3.EXE mailto:sage [2008/07/05(土) 02:06:07 ID:KsoT05Ul]
     / ̄\
    |     |  
     \_/
      |
   /  ̄  ̄ \    
  /  _ノ  ヽ、_  \
/ o゚|⌒|  |⌒|゚o  \   /    /   /  | _|_ ― // ̄7l l _|_
|   | (__人__). |    | _/|  _/|    /   |  |  ― / \/    |  ―――
\  | `|⌒|´ |  /    |    |  /    |   丿 _/  /     丿
/ ̄ |川!| ̄|川i| ̄\

889 名前:名無し~3.EXE mailto:sage [2008/07/05(土) 13:58:04 ID:4ebRKxUn]
ム板のバッチスレは若干1名基地外が居るんだよな
ひたすらこのスレへ誘導する奴

890 名前:名無し~3.EXE mailto:sage [2008/07/05(土) 15:49:45 ID:puWbXOXI]
疎開スルー



891 名前:名無し~3.EXE mailto:sage [2008/07/07(月) 08:55:17 ID:WBvdDtox]
waitってどうするの?

892 名前:名無し~3.EXE mailto:sage [2008/07/07(月) 12:57:56 ID:qBTBgohG]
子プロセスのいずれかが終了するまで呼び出し元のプロセスの実行を一時停止するんだよ。

893 名前:名無し~3.EXE mailto:sage [2008/07/08(火) 20:20:58 ID:cRMgCh3I]
PAUSE

894 名前:名無し~3.EXE [2008/07/10(木) 01:11:41 ID:QngBkBT/]
すみません。しつもんさせてください。
例えば、バッチを作成していて
上のコマンドの命令を行えなかった場合、エラーを表示したいのですが

例で
di
if errorlevel 1 echo a
てやるとaって表示されるのですが
これをエラーの場合は、a,エラーでない場合は、dirを実行したい
と記述するにはどうしたらいいですか?


895 名前:名無し~3.EXE mailto:sage [2008/07/10(木) 05:42:57 ID:3Yg2z5Jp]
di && echo a || dir

896 名前:名無し~3.EXE mailto:sage [2008/07/10(木) 15:33:43 ID:X3fvq8uU]
if/?

897 名前:名無し~3.EXE mailto:sage [2008/07/10(木) 22:00:40 ID:13vKihBB]
>>895
ザンネン

898 名前:名無し~3.EXE mailto:sage [2008/07/10(木) 22:05:26 ID:13vKihBB]
IF %ERRORLEVEL% == 0 (dir) ELSE (ECHO a)

899 名前:名無し~3.EXE mailto:sage [2008/07/11(金) 00:16:03 ID:Vdv4UCdi]
直前のコマンドが例えばdelの時はどうする?

900 名前:名無し~3.EXE mailto:sage [2008/07/11(金) 01:26:51 ID:RkW4GqgN]
あ〜なるほどね。DEL は ERRORLEVEL を返さないな。
DEL の前に IF EXIST するか、
DEL の後に IF EXIST するか、
樹海で祝ってやるか、
どれかだな。



901 名前:名無し~3.EXE mailto:sage [2008/07/11(金) 14:10:09 ID:lw6JvueF]
del hoge | find /v ""
if errorlevel 1 echo error!

902 名前:名無し~3.EXE [2008/07/11(金) 18:21:23 ID:NOWkZyK+]
一つ目のプログラムを引数つきで実行させて
それが終わったら次も同じって感じにするのはどうやったらいいでしょうか。

903 名前:902 [2008/07/11(金) 18:33:00 ID:NOWkZyK+]
流れ適には
cd カレントパス(batファイルのある場所)
program -i カレントパスと指定文字列を足したファイル名
って感じです。

904 名前:名無し~3.EXE mailto:sage [2008/07/11(金) 20:10:18 ID:lw6JvueF]
>>902
:hoge
hoge.exe hogehoge
goto hoge

905 名前:名無し~3.EXE mailto:sage [2008/07/12(土) 04:18:41 ID:yD5Tkok7]
CD %~dp0
program -i %CD%\指定文字列

906 名前:名無し~3.EXE mailto:sage [2008/07/12(土) 23:58:16 ID:swkv5Ihd]
start /wait で終了待ち。

907 名前:名無し~3.EXE [2008/07/13(日) 02:39:59 ID:rp/1UDNc]
Linuxのsplitのように、ファイルを分割するためのコマンドは、MS-DOSには、存在しますか?

908 名前:名無し~3.EXE mailto:sage [2008/07/13(日) 03:04:48 ID:ueztd13P]
ないんでねーの、今時MS-DOS触らにゃならんとは大変ね

909 名前:名無し~3.EXE [2008/07/13(日) 03:06:30 ID:3wulhBBH]
Javaのコンパイルとかコマンドラインでやってるよ

910 名前:名無し~3.EXE mailto:sage [2008/07/13(日) 07:31:09 ID:mmwPdUKG]
>>907
Native Win32 ports of some GNU utilities
ダウンロードは ttp://sourceforge.net/projects/unxutils
解説は ttp://unxutils.sourceforge.net/




911 名前:名無し~3.EXE mailto:sage [2008/07/14(月) 13:57:41 ID:oDYeyaeV]
つdebug

912 名前:名無し~3.EXE [2008/07/14(月) 19:43:37 ID:n25RoDk2]
xpにテルネットでファイルを編集したいんですが
デフォルトのコマンドのみで可能ですか?

913 名前:名無し~3.EXE mailto:sage [2008/07/14(月) 20:51:29 ID:WHXSuf0b]
どんなマシンからどんなマシンへ接続するんだよ

914 名前:名無し~3.EXE mailto:sage [2008/07/15(火) 00:13:59 ID:xfeqMLQj]
それを言えば、できるようになるのかな???

915 名前:名無し~3.EXE [2008/07/15(火) 00:22:15 ID:qYFgCPso]
vistaはeditが復活してたんですっ飛んできました

916 名前:名無し~3.EXE mailto:sage [2008/07/15(火) 00:45:59 ID:IxC+30HX]
edlin

917 名前:名無し~3.EXE mailto:sage [2008/07/15(火) 01:24:43 ID:qYFgCPso]
edlinって人間にも使うことができるものなんですか!?

918 名前:名無し~3.EXE mailto:sage [2008/07/15(火) 07:20:21 ID:4ChMkuSX]
一応使えるが普段はまず使わないな

起動してすぐ ? 打ってEnterで
一応一通りの使い方は解るはずだぞ

919 名前:名無し~3.EXE [2008/07/15(火) 19:37:07 ID:cCtJmu61]
Vistaではedlinもeditも日本語使えないんじゃ、英語だけで済ますの?

920 名前:名無し~3.EXE mailto:sage [2008/07/15(火) 21:08:10 ID:xfeqMLQj]
素直に「できません」と、なぜ言えない?決して恥ずかしい事では無いんだぞ。



921 名前:名無し~3.EXE mailto:sage [2008/07/16(水) 01:44:51 ID:pxO0gOcj]
ほんとだEditがある。英語だけど w

922 名前:名無し~3.EXE mailto:sage [2008/07/16(水) 02:12:07 ID:u0dIEc5S]
@echo off
setlocal
set count=0
:loop
set flag=0
set /a count=count+1
set /a y=(count/3)*3
if /i %y% equ %count% set flag=1
echo %count% | find "3" >nul && set flag=1
if %count% geq 40 set flag=2
if /i %flag% equ 1 (
echo %count%^G
) else (
echo %count%
)
if /i %flag% equ 2 goto :end
sleep 1
goto :loop

:end
endlocal

923 名前:名無し~3.EXE mailto:sage [2008/07/16(水) 03:24:31 ID:+miDdALN]
実際に使ってみると難しいエディタじゃないぞ <<EDLIN
元々使う理由は無いけどVistaでは本気で使えなくなったな

924 名前:名無し~3.EXE mailto:sage [2008/07/16(水) 13:43:04 ID:o0wLnRgo]
>>912
可能
for + set + echo

925 名前:名無し~3.EXE mailto:sage [2008/07/16(水) 16:47:45 ID:CHcrAZte]
東京から沖縄まで歩いて行くことが出来ますか?

926 名前:名無し~3.EXE mailto:sage [2008/07/16(水) 19:16:34 ID:50WktuQw]
海あるから泳がないと無理だろな。


927 名前:名無し~3.EXE [2008/07/16(水) 22:09:57 ID:Syxd9oxK]
座って行けると思うがw

>素直に「できません」と、なぜ言えない?決して恥ずかしい事では無いんだぞ。
話しは少しずれるが、edlinやeditが本気で使えなくなったこと(日本語が使えない)を恥ずかしがる感性をMSが持ち合わせていたならばと思ってしまう。

928 名前:名無し~3.EXE mailto:sage [2008/07/16(水) 22:40:22 ID:3tFT2zCk]
海底も歩けるよ!

929 名前:名無し~3.EXE mailto:sage [2008/07/16(水) 23:11:31 ID:/0LA4MwY]
すんません
ftpを簡単にするにはどんな書き方がありますか?

930 名前:名無し~3.EXE mailto:sage [2008/07/16(水) 23:43:01 ID:m92DBgjO]
>>929
FTPコマンドの自動化について言ってるのであれば、
FTP スクリプチ
で検索して下さい。

それ以外である場合、回答できるAAAクラスのエスパーがこのスレにはいないと思われるので、
どうしたいのか詳細を書いて下さい。



931 名前:名無し~3.EXE mailto:sage [2008/07/17(木) 00:20:26 ID:s7qUL6sJ]
FTP スクリプチの検索結果 11 件中 1 - 11 件目 (0.26 秒)

932 名前:名無し~3.EXE mailto:sage [2008/07/17(木) 00:49:55 ID:avMHCYlH]
すくりぷち☆

933 名前:名無し~3.EXE mailto:sage [2008/07/18(金) 01:19:22 ID:nPyhhALC]
batファイルでコマンドラインエディタを作るというのは
どのくらい大変そうですか?

934 名前:名無し~3.EXE mailto:sage [2008/07/18(金) 01:50:22 ID:XFnK5WyO]
コマンドラインエディタ.bat
edlin %*


935 名前:名無し~3.EXE mailto:sage [2008/07/19(土) 01:15:31 ID:v1awZW6K]
>>934
天才

936 名前:名無し~3.EXE [2008/07/23(水) 15:49:22 ID:tOjBlxX+]
DOSのバッチでwget(外部コマンド)で複数ファイルをダウソするバッチを作っています。

WEBサーバー(IIS)にパスワードがかかっていて。

wget --user=(ユーザ名) --password=(パスワード) .......
でとってきてくれる。

ここまではいいのですが、ユーザ名にスペースが使われていて
wget --user=A BC --password=pass とやると
区切り文字はスペースだからユーザ名は"A"と判別してしまう。

区切り文字をカンマ","にすれば
wget,--user=A BC,--password=pass,.....
とやってコマンドが通るような気がする。

http://(ユーザ名):(パスワード)@www.
ともかけるので
A BC:pass@www
とやってみたが、区切り文字がスペースなのでエラーになってします。

どなたかお知恵を拝借願えないでしょうか。

937 名前:名無し~3.EXE mailto:sage [2008/07/23(水) 16:15:43 ID:2vNzDCb6]
"--user=A BC" でいけそうな気がする

938 名前:名無し~3.EXE [2008/07/23(水) 16:43:57 ID:CMWfKaqy]
>>937
"--user=A BC"
--user="A BC"
"を'にした、
A^ BC
A\ BC
A%20BC

だめだった

939 名前:名無し~3.EXE mailto:sage [2008/07/23(水) 18:54:02 ID:0Y5OUEnX]
--user=ABC で通らない?

940 名前:名無し~3.EXE mailto:sage [2008/07/25(金) 00:00:00 ID:cCrHmHxM]
半角スペース含まれてるから、じゃねーの。>936にあるが。
うちは--user"A BC"でいけてるが。




941 名前:名無し~3.EXE mailto:sage [2008/07/27(日) 20:57:41 ID:dtq3Xkle]
dos窓でcdするときに、ドライブを跨ぐとなぜ/Dオプションなんてつける必要があるんですか?
C:\>cd D:\hoge\hogeで通じるんじゃないでしょうか?

942 名前:名無し~3.EXE mailto:sage [2008/07/27(日) 21:20:35 ID:X4TwxPee]
>941
ドライブ毎にカレントディレクトリの情報を持ってるから、とでも言えば良いのかな。
そもそも、カレントドライブ変更とカレントディレクトリ変更は本来別の操作。

カレントドライブの変更は
d:
と打てばDドライブへ。
c:
と打てばCドライブへ。

カレントディレクトリの変更は、ご存じの cd コマンド。

確か cd に /d オプションが付いたのは途中のバージョンからだったような。
/d は「ドライブを跨ぐ」というより「ドライブ変更とカレントディレクトリの変更を同時にやる」って感じ。

943 名前:名無し~3.EXE mailto:sage [2008/07/27(日) 23:51:39 ID:SRtDFAr7]
カレントディレクトリがドライブごとにいくつもあるって考え方自体がウンコすぎる。
たとえば現在のカレントが(←って変な文章だが)C:\ だったとして、
CD A:\
COPY A.TXT B.TXT
とやっても、コピーされるのは C:\A.TXT であって、
決して A:\A.TXT では無い。
マイクロソフトはそのウンコさ加減に気づいたから、/D オプションを追加したんだろよ。
PUSHD ははじめからドライブまたぎなんだし。

944 名前:名無し~3.EXE mailto:sage [2008/07/28(月) 00:34:35 ID:GG94rwXw]
D:\000\111というフォルダ構成がある時、フォルダ111以下のファイル群を111.zipという名で圧縮して
そのファイルをフォルダ000に作ってからフォルダ111を削除する、ということをwinRARを使って作ってみました。

cd /d "D:\000\111\" && "C:\Program Files\WinRAR\WinRAR.exe" a "..\111.zip" && cd ..\ && rmdir /s /q "111\"

この一文をコピペしてbatファイルを作って動かすと正常に動作するけれど、コマンドプロンプトを起動して貼り付けて
実行すると、winRARがエラーを出して処理が中断してフォルダ111下のファイルが消えてしまいます。
どうもwinRAR圧縮中に圧縮対象のファイルが削除されているようです。
&&で各コマンドを繋げているのに、なぜこうなるのですか。
batファイルとコマンドプロンプトの挙動の違いを教えてください。

945 名前:名無し~3.EXE mailto:sage [2008/07/28(月) 01:23:44 ID:+5Fl+5Tm]
>winRARがエラーを出して
なにかエラーメッセージのようなものは表示されないの?

946 名前:944 mailto:sage [2008/07/28(月) 01:31:07 ID:GG94rwXw]
>>945
winRAR診断メッセージ 追加するファイルがありません。
コマンドプロンプト プロセスはファイルにアクセスできません。別のプロセスが使用中です

この時点でフォルダ111下のファイルは無くなってます。zipも作成されていません。

947 名前:名無し~3.EXE mailto:sage [2008/07/28(月) 01:37:19 ID:+5Fl+5Tm]
じゃぁ、start /w を付ければいいんじゃないかな。こんなふうに
cd /d "D:\000\111\" && start /w "C:\Program Files\WinRAR\WinRAR.exe" a "..\111.zip" && cd ..\ && rmdir /s /q "111\"
こっちは手元に WinRAR が無いから実際に試せない。自分で試してみてね。
(WinRAR と DEL がマルチタスクで同時に動いてるのかもしれない)

948 名前:名無し~3.EXE mailto:sage [2008/07/28(月) 04:06:42 ID:lvsdyRXC]
STARTは最初の""をタイトルと判断する、みたいな仕様がなかったっけ?
START "" /W "C:\Program Files\WinRAR\WinRAR.exe"の方が無難な感じ。


949 名前:名無し~3.EXE mailto:sage [2008/07/28(月) 22:44:13 ID:Flw63PUR]
すいません
Dosのコマンドラインで、Unix系より優れていると言える所ってありますか?

950 名前:名無し~3.EXE mailto:sage [2008/07/28(月) 22:49:37 ID:EkjbpQg3]
DOSコマンドが使える



951 名前:944 mailto:sage [2008/07/28(月) 23:24:35 ID:GG94rwXw]
>>947,948
start "" /w の追加で正常に動くようになりました。ありがとう。

952 名前:名無し~3.EXE mailto:sage [2008/07/28(月) 23:54:52 ID:gS9ca/Z8]
>949
ホンモノのMS-DOS時代はDOSアプリが結構あったからまだ良いんだけど
コマンドプロンプトになってからは、利点あんまり無いな。
そもそも、GUIであるWindowsに取って付けたようなアプリケーションだし。
Unix系はコマンドないと手が届かない部分が結構あるからこそ、充実してるとも言えなくもない。

953 名前:名無し~3.EXE mailto:sage [2008/07/29(火) 00:02:49 ID:UhTEv5gP]
ひとそれぞれじゃないか。
コマンドに慣れて無い人は窓を使えばいい。
無理してコマンド使うこたぁねぇよ。

954 名前:名無し~3.EXE mailto:sage [2008/07/29(火) 00:04:07 ID:UhTEv5gP]
すいません
Windowsの窓アプリで、Unix系より優れていると言える所ってありますか?

955 名前:名無し~3.EXE mailto:sage [2008/07/29(火) 00:13:06 ID:HMBDDzG4]
その歴史からWindowsのデスクトップアプリのほうが圧倒的に使える物が多いよ。
まだ、かもしれないけどね。


956 名前:名無し~3.EXE mailto:sage [2008/07/29(火) 01:54:15 ID:CkAA5d8W]
「Dosのコマンドライン」ってのが何を指してるのか分からないけど
最大のメリットは現状のトップシェアOSであるWindowsで標準で使える
ってことだと思う。


957 名前:名無し~3.EXE mailto:sage [2008/07/29(火) 12:51:26 ID:luJdVJDk]
分からないならレスしなくていいです。すっこんでてください。

958 名前:名無し~3.EXE mailto:sage [2008/07/29(火) 19:27:14 ID:dTIjqH8+]
Linuxがすべての面で優れててDOSが劣る存在だと主張するやつは人間として糞
NTメインになってDOSは確かに使わない時代になったとおもうよ。けど
唯物論はこのOS飽和時代に全く意味は無いだろ?好きなのを適宜習得すればいいの
>>954はWINDOWS板にわざわざやってきてごくろうさんね。何を考えてるんだろうな。

959 名前:名無し~3.EXE mailto:sage [2008/07/29(火) 19:31:59 ID:3B2nZuAV]
偉い人は下を見て馬鹿にする暇があるなら、使いにくいUNIXのコマンドラインよりももっとすばらしいものを開発してください。

960 名前:名無し~3.EXE mailto:sage [2008/07/29(火) 19:48:24 ID:s013n4jE]
PowerShell



961 名前:名無し~3.EXE mailto:sage [2008/07/29(火) 19:51:35 ID:HMBDDzG4]
>>957-959
レスのレベルからして自演にしかみえん。面白くないよ。


962 名前:名無し~3.EXE mailto:sage [2008/07/29(火) 19:55:48 ID:HMBDDzG4]
>>960
マジレスでUNIX系のシェル超えててワロタw

963 名前:名無し~3.EXE mailto:sage [2008/07/29(火) 23:21:52 ID:luJdVJDk]
プッ・・・ゲイツのオナニーやん

964 名前:名無し~3.EXE mailto:sage [2008/07/31(木) 01:33:03 ID:7MvSvBeb]
DOS窓が使いにくいんだよ
tera termみたいのでつなげないの?
自分にtelnet以外で

965 名前:名無し~3.EXE mailto:sage [2008/07/31(木) 01:36:22 ID:oJH/78M3]
ckwmodでも使ったら?

966 名前:名無し~3.EXE mailto:sage [2008/07/31(木) 01:41:27 ID:7MvSvBeb]
>>965
それなに?

967 名前:名無し~3.EXE mailto:sage [2008/07/31(木) 06:48:12 ID:tRdZkavP]
すいません、質問です。
Dosプロンプトで、ファイルの更新日時やアクセス時刻を変更出来るコマンドはありませんか?
(いわゆる、Unixでいうところのtouchや、utime関数に相当するものです。)

一応ぐぐってみたのですが、それを実現するフリーのファイラーソフトとかはあるようなんですが、
コマンドプロンプト(またはbatファイル)のみで(何も追加インストール等せずに)実現することは出来ないでしょうか?

copyやxcopyでは、元のファイルのタイムスタンプを保持してしまいます。
ちなみにOSはXP-sp2です。

968 名前:名無し~3.EXE mailto:sage [2008/07/31(木) 10:56:39 ID:CZC3VFh2]
>>967
自分はNircmd使ってる。(他にも実現できるToolあると思うけど)
標準cmdではコマンド無いんじゃないか?

969 名前:名無し~3.EXE mailto:sage [2008/07/31(木) 12:12:43 ID:pmbkfmD5]
>>967
type nul >>file

970 名前:名無し~3.EXE mailto:sage [2008/07/31(木) 12:37:44 ID:Z+lCCPZ/]
>>968
ありがとうございます。ちょっと調べてみます。

>>969
うおおお、そんな手があったとは・・・・。
そういえば自分も、Unix環境でなら、0byteのファイル作成したり、
圧縮済みのlogファイルを切り詰める時に、cp /dev/null /path/to/file とかやったことがあります。



971 名前:名無し~3.EXE mailto:sage [2008/07/31(木) 16:58:05 ID:pqUdStB6]
だったら、
COPY NUL C:\path\to\file
でいいんじゃない?

972 名前:名無し~3.EXE mailto:sage [2008/07/31(木) 19:18:57 ID:pmbkfmD5]
COPY C:\path\to\file + NUL C:\path\to\

973 名前:名無し~3.EXE mailto:sage [2008/08/01(金) 02:02:32 ID:cUFqKgt+]
A01.bmp , A02.bmp , A03.bmp , … の先頭に1文字付け足したいのですが,うまくいきません。
1A01.bmp , 1A02.bmp , 1A03.bmp … にならないのはどうして? ren は文字数が増えるとダメなのかな?



C:\picture>dir /b
A01.bmp
A02.bmp
A03.bmp

C:\picture>ren A0?.bmp 1A0?.bmp
重複するファイル名が存在するか、またはファイルが
見つかりませんでした。
重複するファイル名が存在するか、またはファイルが
見つかりませんでした。

C:\picture>dir /b
1A0.bmp
A02.bmp
A03.bmp

974 名前:名無し~3.EXE mailto:sage [2008/08/01(金) 05:25:26 ID:AzeG6fL3]
夏だね

975 名前:名無し~3.EXE mailto:sage [2008/08/01(金) 07:24:39 ID:KkABB+VG]
リネーム先のファイル名に?つける気持ちはわからんでもないが、その?は無意味

for %i in (A0?.bmp) do ren %i 1%i

976 名前:名無し~3.EXE mailto:sage [2008/08/01(金) 22:00:53 ID:cUFqKgt+]
>>975

ありがとうございました。* が1文字の変数のように機能すると勘違いしていました。

977 名前:名無し~3.EXE mailto:sage [2008/08/02(土) 16:32:02 ID:lHCG365N]
ファイルの結合をコマンドラインでやろうと思ってます
でも一行に大量に記述すると動かなくなってしまいました
これを回避するためにはどうすればいいんでしょうか
複数行を一行として動かす方法などありましたら教えてください

【成功】
COPY /B "0001"+"0002"+"0003"+"0004"+"0005"+"0006" 〜〜 +"0050" "temp.zip"

【失敗】
COPY /B "0001"+"0002"+"0003"+"0004"+"0005"+"0006" 〜〜 +"9999" "temp.zip"

978 名前:名無し~3.EXE mailto:sage [2008/08/02(土) 16:43:39 ID:jABhh63U]
COPY /B "0001" "temp.zip"
COPY /B "temp.zip"+"0002" "temp.zip"
〜〜
COPY /B "temp.zip"+"9999" "temp.zip"


979 名前:名無し~3.EXE mailto:sage [2008/08/02(土) 16:45:44 ID:lHCG365N]
>>978
盲点でした ありがとーございましたm(__)m

980 名前:名無し~3.EXE mailto:sage [2008/08/02(土) 17:08:46 ID:elSen6IZ]
そのやり方じゃ処理速度が悪いけどな



981 名前:名無し~3.EXE mailto:sage [2008/08/02(土) 20:59:50 ID:lHCG365N]
>>978だと遅かったのでやっぱり200個ごとにまとめて処理→最後にまとめたやつをさらにまとめる にしました

982 名前:名無し~3.EXE mailto:sage [2008/08/02(土) 23:16:35 ID:2oS7zYXl]
0000〜9999を一つのフォルダに纏めて

copy /b * ..\all.zip

983 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 02:46:10 ID:87Ih2WMQ]
たしk

984 名前:名無し~3.EXE [2008/08/03(日) 02:50:21 ID:87Ih2WMQ]
埋め

985 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 03:05:42 ID:87Ih2WMQ]
埋め

986 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 12:00:57 ID:87Ih2WMQ]
埋める

987 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 12:23:56 ID:87Ih2WMQ]
埋める

988 名前:名無し~3.EXE mailto:sag [2008/08/03(日) 12:29:16 ID:87Ih2WMQ]
埋める

989 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 12:30:22 ID:87Ih2WMQ]


990 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 12:34:54 ID:87Ih2WMQ]




991 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 12:41:59 ID:87Ih2WMQ]


992 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 12:43:04 ID:uyRUdrj/]
次スレ建てる前に埋めるなボケ

993 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 12:48:22 ID:87Ih2WMQ]


994 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 12:50:53 ID:87Ih2WMQ]


995 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 12:52:45 ID:87Ih2WMQ]


996 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 13:06:12 ID:87Ih2WMQ]
すみません。
やめます。

997 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 13:25:54 ID:LQkUy7Y5]
埋めるなら次スレ建てろボケ。

998 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 13:38:42 ID:Ni7TLdDU]
勃てろだと?
お前が勃てろよ

999 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 13:40:29 ID:LQkUy7Y5]
なんだと!

1000 名前:名無し~3.EXE mailto:sage [2008/08/03(日) 13:40:50 ID:LQkUy7Y5]
勃った

初心者〜管理者まで必読!コマンドライン(DOS Pt.7)
pc11.2ch.net/test/read.cgi/win/1217738171/




1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






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

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

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