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

このエントリーをはてなブックマークに追加
1名無し~3.EXE
適材適所で GUI と CUI を組み合わせて、 (゚д゚)ウマー

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

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

質問も歓迎だけど、自分で調べて勉強する努力も忘れずに。
2名無し~3.EXE:2007/04/14(土) 22:53:39 ID:hbxFcMHM
関連スレ

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

■★▲DOSはまだ現役! Drive.B:
http://pc11.2ch.net/test/read.cgi/os/1046875141/l50
3名無し~3.EXE:2007/04/14(土) 22:55:18 ID:hbxFcMHM
初心者〜管理者まで必読!コマンドライン(DOS Pt.6)
と入れようとしたら、
「サブジェクトが長過ぎます」
と警告されて、スレがたてられなかったので、上記のように変更しました。
4名無し~3.EXE:2007/04/15(日) 10:32:11 ID:SIUF16m0
5名無し~3.EXE:2007/04/15(日) 18:28:27 ID:OzCFcZOC
名無し~3.EXEは良くない
名無し~3.COMか名無し~3.BATにするべきだ
6名無し~3.EXE:2007/04/15(日) 18:55:01 ID:P6RjSyHQ
rundll32 kernel32.dll,SetSystemPowerState
は効かないのはなぜだろ
7名無し~3.EXE:2007/04/16(月) 05:35:16 ID:QcQIt7Ek
Win2000 & IME2000 な環境で
キーボードのプロパティと MS IME 2000 のプロパティを
コマンドラインから呼ぶ方法ってある?
8名無し~3.EXE:2007/04/16(月) 09:05:09 ID:YwiqOVSM
キーボードのプロパティは control keyboard
IME2000は知らないがプロパティ開いた時にタスクマネージャ等で
起動プロセス名を確認したらいいんじゃないかな
9名無し~3.EXE:2007/04/16(月) 20:38:24 ID:lm+JRBwI
できたできた。ありがとう。

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

話は変わって、前スレで XP から 2000に
TASKKILL, TASKLIST をコピーすれば使える的な
話が出てたけど、XP じゃないと使えませんって
メッセージが出て無理だったよ。
バージョン次第なのかもしれないけど一応報告。
10名無し~3.EXE:2007/04/22(日) 17:26:15 ID:gGQB4N53
11名無し~3.EXE:2007/05/04(金) 03:38:10 ID:DU0ceJxS
すいません
for文で` " `(二重引用符)を区切り文字にしたいのですが、
for /f "delims=^"" %%A
と書いてもうまくいきません。
他にも一重引用符や逆引用符でくくってみたのですが、結果は同じでした
Cueシートを参照したいのでどうしても二重引用符を区切り文字にしたいのですが
どうにかならないでしょうか?
12名無し~3.EXE:2007/05/04(金) 05:44:13 ID:Hk96JH7Z
どうにかすることも出来るけど、cueシートの操作はwshとかの方がいいよ
1311:2007/05/04(金) 07:58:10 ID:DU0ceJxS
>>12
wshというものの存在をはじめて知りました…勉強して出直してきます

ただCueシートから参照した文字列を、最終的にCLIアプリケーションに送りたいのですが、
Windows Script Hostというのはそういったことも可能なのでしょうか?
14名無し~3.EXE:2007/05/04(金) 08:05:45 ID:KUqa9e+R
その前で一旦何かに置換しとけば?
たとえば、
set xxx=%aaa:"=,%
15名無し~3.EXE:2007/05/04(金) 08:08:03 ID:Hk96JH7Z
>>13
可能だよ
1611: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:2007/05/04(金) 16:23:49 ID:KUqa9e+R
エスパーな俺がお前のBATファイル名はshutdown.batだと透視した。
19名無し~3.EXE:2007/05/04(金) 16:29:21 ID:6iB+pe0c
>>18
キミ、マジで天才
2017:2007/05/04(金) 16:42:26 ID:SLT3oq8P
>>17
思わず後ろを振り返っちまっただよ。

カレントディレクトリの方がPATHのディレクトリ群よりも優先されるということ
ですか?
21名無し~3.EXE:2007/05/04(金) 19:43:35 ID:EyJempdz
>20
爆笑。
22名無し~3.EXE:2007/05/04(金) 21:43:22 ID:R5kvvwgs
23名無し~3.EXE:2007/05/05(土) 15:50:54 ID:kP//l2AG
un信じrable
24名無し~3.EXE:2007/05/07(月) 19:25:07 ID:Num9bxOL
自問自答自讃でもいいから新ネタでお願いします
25名無し~3.EXE:2007/05/08(火) 21:33:06 ID:sjfhnHyh
ネタ投下
md con.\
ってどういう理屈でそういう結果になるの?
26名無し~3.EXE:2007/05/09(水) 01:16:38 ID:Hl8Z3A4f
conはMSDOS予約デバイス名。
昔conconバグがブラクラに流用されてWindowsが落とされる問題が頻発した。
conconバグは修正されたが、Windowsには予約デバイス名を含むファイル名の
扱いに今なおバグが潜んでいる。
よって>>25の挙動も単なるバグ。

と実行もしていないのに言ってみるテスツ
27名無し~3.EXE: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:2007/05/09(水) 12:26:22 ID:eIs+wjw8
昔はパイプ使ってても、実際には一時ファイルが作られていたけど
最近のはさすがにそんなことはないのだろう。

>>27 へのレスは
「わかりません」。
29名無し~3.EXE:2007/05/09(水) 13:20:42 ID:fkBIoDjl
>>27
> for文のコマンドの中にパイプが組み込めないので

パイプを^でエスケープ
30名無し~3.EXE:2007/05/09(水) 17:12:00 ID:ADeKrMMD
>>27
>パイプ
SED使わずにやればいいのに

>?
つwsh
またはwmic.exe(?) ←2000で使えたっけ?
3127: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: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: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:2007/05/09(水) 19:05:05 ID:0CVMi5If
2行目
set reg=%%I
に修正して。
それとdelims=の後には空白ではなくTabが入ってる。
35名無し~3.EXE:2007/05/09(水) 19:19:38 ID:fkBIoDjl
>>32
skip=4の方がシンプルでいいと思うけど

>>33-34
値にタブが入ってるとアウト
36名無し~3.EXE:2007/05/09(水) 19:34:54 ID:0CVMi5If
>>35
なるほど。でもファイルパスって前提があるのでは?
そういうこと言ったら、キー名に空白が入ってたらアウトってのも言える。
37名無し~3.EXE:2007/05/09(水) 19:36:28 ID:0CVMi5If
キー名じゃなくてキーの値の名前だったorz
38名無し~3.EXE:2007/05/09(水) 19:58:27 ID:fkBIoDjl
>>36
> ファイルパスって前提

そういやそうだった…orz
35は忘れてくれ
39名無し~3.EXE:2007/05/09(水) 19:58:51 ID:0CVMi5If
文句だけ言って修正方法を示してなかった。

for /f "skip=4 tokens=2* delims= " %%I in ('reg query 完全キー名 /v "値名"') do set reg=%%J
4027: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:2007/05/11(金) 11:16:52 ID:stFG0Iol
schtasksでタスクを登録するときに、「タスクの実行時にスリープを解除する」をONにするにはどうしたらいいですか。
42名無し~3.EXE:2007/05/11(金) 15:16:11 ID:Fg7QQDj2
>>41
jt.exeを使用して、プロパティにSystemRequired=1を指定する。
http://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:2007/05/11(金) 20:20:42 ID:stFG0Iol
>42
どうもありがとうございます。
やってみます。
44名無し~3.EXE:2007/05/14(月) 00:43:43 ID:XMJhZ/Pp
環境変数を展開させないようにすることってできるんでしょうか?
(例えば mkdir %USERNAME% とやると %USERNAME% というフォルダが作成される etc)
45名無し~3.EXE: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」内に対して問題なく処理できるので、
この引数以外の部分については特に問題ないと思います。

どなたかアドバイスよろしくお願いします。
4746: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:2007/05/14(月) 01:20:24 ID:MCFCwKH0
ほげを省略せずに具体的な値を出せばどうかな?
おそらく、そのパスの中にスペースが入ってるとかでは?"delims="
4946: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。
どなたかアドバイスありましたらよろしくお願いします。
5046:2007/05/14(月) 01:57:05 ID:6p7JJnAY
書き忘れましたが、
set FILEPATH=D:\bkuptest\ほげ\bkup_ほげ_\
を直前に記述しています。
よろしくお願いします。
51名無し~3.EXE: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: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: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:2007/05/14(月) 03:29:57 ID:66G3PQU8
FORの問題なら遅延展開にすれば回避できるかも
ただしIN ('コマンド')はサブシェルで実行されるので
IN ('cmd /v:on /c dir /b "!filepath!"')
みたいに
55名無し~3.EXE:2007/05/14(月) 03:34:38 ID:66G3PQU8
あとパイプを使う方法もありかな
dir ... | for ... in ('more')
でもパイプはいろいろ難しいことがあるから使わずに済めば
それに越したことはない
56名無し~3.EXE:2007/05/14(月) 03:49:41 ID:66G3PQU8
そうだ所詮サブシェルで実行されるので%%で遅延展開すれば済むね
IN ('dir /b "%%filepath%%"')
みたいに
5746: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: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:2007/05/14(月) 23:22:12 ID:MCFCwKH0
・4で割り切れる年はうるう年
・100で割り切れる年はうるう年でない
・400で割り切れる年はうるう年
・2000で割り切れる年はうるう年ではない
の間違い
61名無し~3.EXE:2007/05/14(月) 23:26:54 ID:MCFCwKH0
すまそ
・2000で割り切れる年はうるう年ではない
は間違いのようだ。記憶違いだったみたい。
62名無し~3.EXE:2007/05/14(月) 23:40:16 ID:MCFCwKH0
質問の直接の回答だが、

%%~tI : %%Iのファイルの最終更新日
63名無し~3.EXE:2007/05/15(火) 00:31:30 ID:dFS1GUhg
キミ、マジで天才
64名無し~3.EXE:2007/05/15(火) 01:12:22 ID:GKCxdgkd
>>58のはファイル名に入ってる日時を基準にしたいのか、ただ単に例として挙げただけで
ファイル名全然関係なくて更新日時だけ相手にしてりゃいいのか、ようわからんわ。
65名無し~3.EXE: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: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: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: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: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: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:2007/05/16(水) 12:56:13 ID:7/cOdyGm
自演?
72名無し~3.EXE:2007/05/17(木) 18:11:54 ID:xG9pEqHy
wsh使ったほうが簡単なのにご苦労さん
73名無し~3.EXE:2007/05/17(木) 18:29:25 ID:818pu52B
ちゃんと月数で日にちまで補正してくれるね。

20080331 -m -1 = 20080229

20080331 -m -13 = 20070228
74名無し~3.EXE:2007/05/17(木) 18:43:17 ID:818pu52B
>>72
>・前提条件として、外部プログラム(GNU等フリーソフト)を使っても構わないのか
>  またはJava/VBスクリプトの使用は?
と聞いてるので、そこら辺はちゃんと分かっていて、敢てBATのみで作成したのでは?
75名無し~3.EXE: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:2007/05/18(金) 12:19:57 ID:N8xUsF93
すみません
for %%I in (c:\abc\*) do call set list=%%list%%;%%~nI
でした
7727: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 *.* >

7827: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:2007/05/18(金) 18:57:24 ID:U0IwhG1h
>>78
DIR *.*
8027: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:2007/05/18(金) 20:18:56 ID:U0IwhG1h
>>80
set x=DIR *.*
%x%
または
echo DIR *.*|cmd.exe
82名無し~3.EXE: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: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:2007/05/19(土) 13:13:12 ID:gV4BneKY
>>84
もう結論が出てるじゃないですか。
他のものを試してみては。

Windows 2000/XP でログオフ/シャットダウン/再起動アイコンを作るには?
http://homepage2.nifty.com/winfaq/w2k/boot.html#1179
タイマー指定可能な小型軽量シャットダウンコマンド
http://www.vector.co.jp/soft/win95/util/se190882.html
お勧めのシャットダウン プログラム
http://homepage2.nifty.com/kotkaga/note/604shutdown.html
86名無し~3.EXE:2007/05/19(土) 18:20:22 ID:MzggPKBH
>>84
無理
87名無し~3.EXE:2007/05/19(土) 18:59:01 ID:MEXVxhB1
runas.exe
ショートカット詳細設定別の資格情報で実行する
タスクスケジューラ
88名無し~3.EXE:2007/05/20(日) 02:19:36 ID:Zd3Z0KcV
>>87
制限ユーザーにAdminのユーザー名とパスワード知られたら意味ないじゃん。
89名無し~3.EXE:2007/05/20(日) 04:42:27 ID:dWDzVb/9
あるフォルダの中の複数のファイルの更新日が30日以上前のものは
削除するというバッチファイルを作ることは可能でしょうか?
もしよろしければヒントをいただけませんか?
90名無し~3.EXE:2007/05/20(日) 05:38:46 ID:aqxTfgS4
ヒント:過去ログ
91名無し~3.EXE: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:2007/05/23(水) 00:15:21 ID:SSq40r1e
findstr /?

そのものズバリの例が示されているわけだが
94名無し~3.EXE:2007/05/23(水) 00:25:56 ID:9lvFrJAs
うむ。findstrだけでじゅうぶん。for要らない。
つーかここにいるとfor病になってしまうのも頷けるが。。。
95名無し~3.EXE:2007/05/23(水) 00:30:25 ID:z/fSw5qr
>>93
ありがとうございますm(_ _)m
96名無し~3.EXE:2007/05/23(水) 00:35:02 ID:5wOgLhAV
>ここにいるとfor病になってしまう
あー、あるある
97名無し~3.EXE:2007/05/23(水) 00:36:16 ID:z/fSw5qr
>>94
そうなんですか。。ありがとうございます。
何かとFOR使ってしまうところがあって。。
98名無し~3.EXE:2007/05/23(水) 00:47:57 ID:nAmeHJsa
まあ、forの方の対処も覚えといて損はないよ。
"delims="
findstrの方は、/cかな
99名無し~3.EXE:2007/05/23(水) 00:51:20 ID:z/fSw5qr
みなさん丁寧かつ迅速なレス、本当にありがとうございます。

>>98
delimsで指定無しにすれば
デフォのスペースやタブを無効化できるということでしょうか?
100名無し~3.EXE:2007/05/23(水) 00:52:47 ID:9lvFrJAs
しかしこんな処理でforぶん回すのは実用的には愚の骨頂といっておこう。
101名無し~3.EXE:2007/05/23(水) 00:55:13 ID:z/fSw5qr
>>100
言ってませんでしたが
A.txtには、一応複数行あるんです><
各行の文字列を使用するんです。
102名無し~3.EXE:2007/05/23(水) 01:00:32 ID:9lvFrJAs
つ findstr /?

つーかfindstr /l /g:A.txt B.txt
103名無し~3.EXE:2007/05/23(水) 01:05:55 ID:z/fSw5qr
>>102
ありがとうございます。
できた・・・。
104名無し~3.EXE:2007/05/23(水) 06:39:32 ID:Z0KdSFHv
普通に考えて find や findstr みたいなテキスト検索系が
複数行に対応していないわけがないと思わんのか。
105名無し~3.EXE:2007/05/24(木) 21:11:54 ID:KEd+r5mO
はあ?
106名無し~3.EXE:2007/05/24(木) 23:03:32 ID:zlbejraP
>>105
「はあ?」とは思わんよ。
解決した後に何の実にもならない文句だけ言う奴って...とは思ったけどね。
107名無し~3.EXE:2007/05/25(金) 22:32:49 ID:fAyZ4XY3
findは複数文字列サポートしてないだろ
108名無し~3.EXE:2007/05/26(土) 00:08:02 ID:nd32zRgJ
はあ?
109名無し~3.EXE:2007/05/26(土) 00:13:45 ID:g8UzYY61
はぁ。
110名無し~3.EXE:2007/05/26(土) 00:19:03 ID:YMAjJ4KA
はっぁー
111名無し~3.EXE:2007/06/11(月) 07:47:49 ID:ieH1oTGK
112名無し~3.EXE: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:2007/06/15(金) 00:47:46 ID:Ac8c+en4
おまいらの大好物キタ━(゚∀゚)━ !!
115名無し~3.EXE: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: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: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: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:2007/06/15(金) 18:45:34 ID:7cDfHIWt
>>118
途中の階層のディレクトリの中にファイルが存在してたらそのファイルまで移動されちゃうぞ
120名無し~3.EXE:2007/06/16(土) 00:12:08 ID:0FhZKQDj
忘れ物だよ

つ 要件定義フェーズ
121名無し~3.EXE:2007/06/16(土) 05:37:33 ID:7bk03Znc
>>119
それでいいんじゃないの?
>>113にはどこにも最下層のファイルだけ移動とは書いていないけど…
122名無し~3.EXE:2007/06/16(土) 08:48:31 ID:zaoBWCRQ
要するに>>113は救いようもない程におバカだったってことだね
123名無し~3.EXE:2007/06/16(土) 14:38:01 ID:7bk03Znc
ディレクトリが空だって判定するスマートな方法ってどうやるの?

泥臭い・強引な方法ばかり思いつくんだが…
124名無し~3.EXE:2007/06/16(土) 19:02:59 ID:CXEmvWRn
DIR /B "C:\hoge" | FIND /V "" > NUL で ERRORLEVEL=1 なら空。
ってのは強引?
125名無し~3.EXE:2007/06/18(月) 01:45:27 ID:H6wUdAfo
読みやすさ優先ならfor /r と set /a ってなところだろうけどねぇ
126名無し~3.EXE:2007/06/18(月) 02:40:53 ID:YraK8n5o
for /rって何だっけ?って思わずヘルプ(for /?)見ちゃったよ
127名無し~3.EXE:2007/06/21(木) 04:59:20 ID:s2INtICy
cmd.exeって激しく使いにくいんだけど替わりになるフリーソフトって何かない?
128名無し~3.EXE:2007/06/21(木) 08:18:21 ID:EssH3dBi
つ【ActivePerl】
129名無しさん@Vim%Chalice: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:2007/06/21(木) 17:53:11 ID:jQc8O4Oq
 すまん大嘘こいてた。
 ansi-termはde ansi-termとかゆうマクロでフックしてたら
 しい。.emacsに埋め込んでた...
 
 ansi-termはcygwinが必要。
 んで素のesheelは違うバッファで起動したら同じプロ
 セス呼んでる('A`
 きっとどこかには誰か書いてるだろう便利lisp
 があれば割と逝けると思うんだけど。

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

132名無し~3.EXE:2007/06/22(金) 00:04:41 ID:ZAVgS6CQ
どうせ単なるコマンドシェルだし、TABでの補完さえ出来ればそんなに気にならんけどなぁ
133名無し~3.EXE:2007/06/23(土) 03:10:03 ID:9gQ/tesN
>TABでの補完
してる場合って、実際をTABしたい場合はどうしてるんですか?

かくいう漏れはCompletionCharにCtrl+FをアサインしてるCMD使い。
134名無し~3.EXE:2007/06/23(土) 04:03:01 ID:NIt2miq6
>>133
TABはどんなとき入力してます?
俺はここ数年TABの入力の必要性を感じたことがないけど
135名無し~3.EXE:2007/06/23(土) 07:36:40 ID:LpBOoalT
あるとしたら正規表現中に\t入れるぐらいだわな
136名無し~3.EXE:2007/06/23(土) 14:38:32 ID:V6yGWUpq
実Tabって使ったことないな。
137名無し~3.EXE:2007/06/23(土) 15:02:52 ID:ckZdOOmB
Tabはタブーだからね
138名無し~3.EXE:2007/06/23(土) 19:16:48 ID:LpBOoalT
darega umaikoto ieto
139名無し~3.EXE: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: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:2007/06/26(火) 19:01:40 ID:Bg2uMH0m
tabはシステム環境変数に入れとくよ
143名無し~3.EXE:2007/06/26(火) 19:10:36 ID:Cd9m53It
>>142
それだと使いづらいよ
for /f やfindstrなんかで使うのに遅延環境変数を使わないけなくなる
144名無し~3.EXE:2007/06/26(火) 19:40:42 ID:WXGDVtW4
TABを使いたい時だけcmd /f:offを実行して使い終わったらexit

つかTABが必要なら別キーにアサインするのがオススメ
145名無し~3.EXE:2007/06/26(火) 20:59:48 ID:uoA+Xcia
その別のキーの文字を入力したくなったらどうするのさ?
146名無し~3.EXE:2007/06/27(水) 04:41:42 ID:TZPENXns
>>144
別のキーにアサインってどうやるの
まさかわざわざそのために常駐ソフトなんか入れないよね?
147名無し~3.EXE: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:2007/06/27(水) 06:06:13 ID:TZPENXns
>>147
[数字]だと文字列の比較になるので。
[]を取っ払えば数字としての比較になる。
149名無し~3.EXE:2007/06/27(水) 06:22:22 ID:Oz3Y82L1
>>148
そうだったんですか!
if構文のときはいつもこの書き方でったので
これが問題だとはまったく思い至りませんでした
ありがとうございました!
150名無し~3.EXE:2007/06/27(水) 06:47:21 ID:TZPENXns
ついでに、同じディレクトリでのリネームは危険。
リネーム後のファイルがあらためて検索対象になることがある。
どういう場合にそうなるのかは宿題。
151名無し~3.EXE:2007/06/27(水) 09:27:05 ID:VWf9EHKN
曲芸みたいなことまでして0パディングするぐらいなら、
素直にWSHで作って欲しいわ
見づらくて仕方がない
152名無し~3.EXE:2007/06/27(水) 17:47:58 ID:2QApMI8R
>>143
遅延展開は関係ないだろ
153名無し~3.EXE:2007/06/27(水) 22:11:08 ID:lvppcSdl
はあ?
154名無し~3.EXE: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:2007/06/27(水) 23:53:30 ID:VWf9EHKN
別の資格情報で上書きとか繰り返してレジストリ監視してりゃ、どこがキーなのかわかるんでないの?
156名無し~3.EXE:2007/06/28(木) 00:11:38 ID:njxOVg+i
>>155
ありがとうございます。レジストリを直接編集するということですね。
コマンド自体便利だと思ったので、できればコマンドから実行できればよかったのですが。
パスワード変更をかねてキーをさがしてみます。ありがとうございました。
157名無し~3.EXE:2007/06/28(木) 00:14:31 ID:baNJcXIn
>>156
いや、キーさえ分かればreg.exeでどうにでもなるんでないの?
と言いたかったんだ
158名無し~3.EXE:2007/06/28(木) 00:51:02 ID:njxOVg+i
>>157
こんなコマンドあったんですね。あとはキーがわかればコマンドから操作できそうです。
わざわざご指摘ありがとうございました。
159113: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"
)
160113:2007/06/28(木) 23:11:14 ID:bHfzd9Lz
むむ
/b/xは一緒に出来ないようですね
161113: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: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: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:2007/07/04(水) 02:46:16 ID:Zwtmh2SZ
set /?
call /?
そして毎度おなじみ for /?
168名無し~3.EXE:2007/07/04(水) 02:51:55 ID:abxJ+p1r
>>167
おぉ!すばらしい!!
感動しました。
そしていろいろあって奥が深いのですね。
ありがとうございました。
169名無し~3.EXE:2007/07/04(水) 05:06:14 ID:mIR/jNv3
定数?
170名無し~3.EXE:2007/07/05(木) 02:28:26 ID:hAzDK9l7
あんなもので感動できる幸せな人生(はあと
171名無し~3.EXE:2007/07/05(木) 20:24:40 ID:mJP5Jzub
捻くれた物の見方をしてれば大人になった気分♥
172名無し~3.EXE: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:2007/07/06(金) 08:19:32 ID:gFjF/2om
途中で書き込んでしまいました。続きです。

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

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

一応自分で調べた限り フォルダの更新日は %~z1 みたいな変数で参照できるみたいです。
実現するのはBatだと厳しいですかね?
174名無し~3.EXE: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: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
176173: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:2007/07/06(金) 21:47:55 ID:gFjF/2om
http://www.geocities.jp/hokaan/compdel.txt

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

と怒られます。どこがおかしいのでしょうか?文法レベルで構いませんので
Debugをお願いできないでしょうか? ( ) の数を数えたりしたのですが
数に間違いは無いのですが・・・・
178名無し~3.EXE:2007/07/06(金) 22:02:52 ID:Q7SsQ7nu
@echo offを外せばデバッグできるはず
%1が未定義だと、
if == "" (
と展開される。

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

"%と1"の間に ~を挟むと何が違うのでしょうか?
180名無し~3.EXE:2007/07/07(土) 00:10:13 ID:OhijueHL
%1にもし"c:\Program Files"とかが入っていたらこのif文はエラーになる。
if ""c:\Program Files"" == ""
181名無し~3.EXE:2007/07/07(土) 00:19:10 ID:OhijueHL

念のため、これは>>179のように書くとこういう弊害があるということで、
>>178はそういう場合の対処も兼ねている。
182名無し~3.EXE:2007/07/07(土) 12:01:13 ID:PdZu9Idw
簡単に言うと、~は%1が""で括られていなければそのまま、括られていれば""を外す。
call /? 読むなり echo %~1 試すなりすれば分かることだと思うが。
183名無し~3.EXE:2007/07/07(土) 13:54:44 ID:2fDZSvpN
%1→"%1"
%2→"%2"
%~f1→"%~f1"
%~f2→"%~f2"
%~z1→"%~z1"
%~z2→"%~z2"
最終行に「:EOF」を追加

これでどうだ?
184名無し~3.EXE:2007/07/07(土) 13:56:22 ID:2fDZSvpN
うへ、ミスった

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

× %2→"%2"
○ %2→"%~2"
185名無し~3.EXE:2007/07/07(土) 16:03:50 ID:OhijueHL
goto :eofはラベルを作成しなくても飛べる便利機能。
goto /?でも読めば書いてある。
186名無し~3.EXE: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:2007/07/07(土) 16:52:20 ID:57vtk9UF
>>186
泥臭いけど、結果をファイルにリダイレクトしといて、そのファイルにfindstrするとか。
188名無し~3.EXE: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:2007/07/07(土) 17:36:10 ID:OhijueHL
修正
ftp -n -s:ftp_open_check.txt 2&>1 | find "220" >nul
190名無し~3.EXE:2007/07/07(土) 17:46:31 ID:d6rD1byQ
なんというか・・・素晴らしいというか凄いというか、いやはや・・・。

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

>>188-189
"2&>1" ←これの意味を教えて頂けませんか?
修正前のでも動作しましたので・・・。
しかしftp -nなんてあったんですね。 ftp /? してもヘルプ出ないので
ftp -s しか知りませんでした。
で、その出力結果をfindにパイプで渡すからファイルも出来ないと。
素晴らしすぎる
191名無し~3.EXE:2007/07/07(土) 17:53:18 ID:OhijueHL
さらに2>&1の間違いで、標準エラー出力を標準出力にリダイレクトする
(要するに、両方の出力をマージしていっしょくたに標準出力に吐き出す)

ftp -?

-nは自動ログインをしない。ユーザー名とパスワードの入力不要。
open ftp-addres
close
bye
でOK
192名無し~3.EXE:2007/07/07(土) 18:45:05 ID:d6rD1byQ
>>191
2>&1 って書けば 2(標準エラー) 1(標準出力)を結合して吐き出すわけですね。
で、吐き出したデータは使うんですか?どうせfindはそんなの見てないようだし
findの出力はnulの彼方にだし。

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

皆さんはこういう情報はどうやって勉強しているのですか?
私は
http://www.ne.jp/asahi/hishidama/home/tech/windows/bat.html
ココで多くを学びました。
ネットで調べてもあまりBatって細かく解説しているサイトが無くて
やはり本格的にやる為には書籍が必要なんですかね。
193名無し~3.EXE:2007/07/07(土) 19:06:28 ID:OhijueHL
ヘルプだけで結構わかるもんだよ。
set /?
if /?
for /?
call /?
goto /?
cmd /?
setlocal /?
echo /?
194名無し~3.EXE:2007/07/07(土) 19:28:57 ID:d6rD1byQ
>>193
ヘルプだけで分かるって・・・・
すごいなぁ・・・・ハッカーですかw。
本当にどうもありがとうございました。これで今回の目的は全部達成できました・・・。
195名無し~3.EXE: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:2007/07/07(土) 20:39:29 ID:d6rD1byQ
>>195
うわー残念。Windowsを徹底的にチューニングして無駄な物、要らない物を削除
しまくっているのでヘルプファイルとか全部既に消してあるから開けない・・・・。
197ID:2fDZSvpN:2007/07/08(日) 02:15:06 ID:3Owpm7dd
>>185
判ってはいるが、それが無いと何となく気持ち悪いので俺はいつも付けてる。
198名無し~3.EXE:2007/07/08(日) 09:16:58 ID:OzdlBfMw
>>196
あほですか?

質問スレよく見るんでお前さんのような奴時々見かけるけど、
わけもわからず適当にファイル削除する奴を見ると毎度ながら反吐が出そうになる。
199名無し~3.EXE:2007/07/08(日) 09:25:12 ID:b18X3IE2
PCと関係ないスレで「自分でぐぐって調べろ」と言われて
「PCの調子が悪くて・・・」と取り繕ってるのと同じ(要はウソ)
200名無し~3.EXE:2007/07/08(日) 10:30:17 ID:/ja/+eZN
>>197
goto :eof と
goto eof の違いは判ってんのか?
201名無し~3.EXE:2007/07/08(日) 13:08:03 ID:XC4SQeZi
>>198
DiskX Toolsっていうクリーニングソフトがあって、その中の削除項目に
Windowsのヘルプファイルってあるんですよ。
8年間パソコンを使い続けてきて、そんなヘルプファイルなんか見たこともないし
これから先も見る事は無かろう、役に立たないフリーセルやソリティア、マインスイーパ
等のデータと同価値のファイルだろうと思って消してしまってます。
あほですみません。

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

>>200
その二つに違いなんかあるのか・・・・・ と言うか goto : ってコロンつけないと移動できないんじゃ・・
202名無し~3.EXE:2007/07/08(日) 13:11:07 ID:tecQhfCB
exit /b 使ってる。必要なら終了コード付けられるし。
203名無し~3.EXE:2007/07/08(日) 16:51:02 ID:NCTpwRJm
これだからヘルプを読まない人種は
204名無し~3.EXE:2007/07/08(日) 18:05:49 ID:IRXda/xa
ヘルプなんか読む奴は初心者
205名無し~3.EXE:2007/07/08(日) 18:39:27 ID:8kvqjQRq
ヘルプを読まない奴は中二病
206名無し~3.EXE:2007/07/08(日) 22:27:24 ID:yX0XbVid
ヘルプを歌うのはジョンレノン
207名無し~3.EXE:2007/07/08(日) 23:27:27 ID:27PU9C5t
ヘルプにはパラメー、ラメー(自粛
208名無し~3.EXE: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: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:2007/07/09(月) 18:52:30 ID:+C6r4Cf5
IPを/releaseすればいけるかなと予想したんだが、、、
213名無し~3.EXE:2007/07/09(月) 20:53:01 ID:+JHLqH0V
>>209
無理。windows Server 2003なら
netsh interface set interface "ローカル エリア接続" disabled

ただし、WSHでコントロールパネルの「ネットワーク接続」から「{ローカルエリア接続」
を「無効にする」を選択するようなスクリプトを組めば可能。
214名無し~3.EXE:2007/07/09(月) 21:11:48 ID:PbKOGN6x
>>209
最新ドライバを確認するか、そのPCのスレで質問すれば
スタンバイの問題が解決するかも
215名無し~3.EXE:2007/07/09(月) 23:13:23 ID:s2knvD30
>>213
WSHじゃなくて .batじゃ無理?
216名無し~3.EXE:2007/07/10(火) 00:31:52 ID:aY6Hj5YD
>>215
exe自作してbatから呼べばいいんじゃね?
217名無し~3.EXE: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: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:2007/07/10(火) 08:15:54 ID:0DJ2pCRZ
set n=default
set /p n=input:
echo %n%
220名無し~3.EXE:2007/07/10(火) 08:40:06 ID:P6vaWxQy
キー・ストロークの送信とプログラムのアクティベーション
http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html
221209 :2007/07/10(火) 18:57:52 ID:Pg7+75wk
>>213-217
サンクスです。
>217を少し改造して
WScript.exe hoehoe.vbs on/off
とか何とかして実行するように登録しうまくいきました。
222名無し~3.EXE:2007/07/10(火) 21:17:43 ID:LwFxhRr6
Linux 等のシェルで、長いコマンドを一行で入力するとき、'\' で改行できますよね。

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

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

コマンドプロンプトでは出来なくとも(できればうれしいけど) bat ファイルの中では実現したいです。
223名無し~3.EXE:2007/07/10(火) 21:37:04 ID:aY6Hj5YD
できません
224名無し~3.EXE:2007/07/10(火) 22:07:11 ID:vI/PS3tz
環境変数に分割していくしかないな
225名無し~3.EXE:2007/07/10(火) 22:26:19 ID:StBOT2v7
@echo off
echo very ^
long ^
command
226名無し~3.EXE:2007/07/11(水) 12:05:59 ID:dS7I7lnI
>>223-224
プギャー

まあ、俺も知らなかったんだけどな。
227名無し~3.EXE:2007/07/12(木) 22:25:22 ID:VVU4dqVo
WSHについての質問です。

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

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

と怒られます。 マニュアルを調べてみると
MsgBox(prompt[, buttons][, title][, helpfile, context])
とかかれてあります。
promptが"サーバ接続に失敗しました" で、 , buttonsが vbYesNoCancelで、残りは全て
省略可能で ) で閉じる。 構文間違ってないように思うのですがなぜエラーになるんでしょうか?
228名無し~3.EXE:2007/07/12(木) 22:29:37 ID:Wbmh/5un
>>227
「Sub プロシージャを呼び出すときに、かっこを使うことはできません。」
でググレカス
229名無し~3.EXE:2007/07/17(火) 22:10:52 ID:2qlxd08l
set /pだと誤入力の危険があるので、それを回避するために、
バッチファイルからHTAを起動してプルダウンメニューとボタンを表示し、
選択された項目に応じてバッチファイルの動作を変えられたらいいなぁと
考えましたが、これは実現可能でしょうか?
もし可能なら、サンプルを載せていただけると助かります。
また、不可能な場合、何か代替案があるといいのですが・・・。
230名無し~3.EXE:2007/07/17(火) 23:54:30 ID:95VZVBFb
htaからbat実行すりゃいいんじゃないの
231名無し~3.EXE:2007/07/19(木) 21:27:44 ID:thElGmVj
choice.exe
232名無し~3.EXE:2007/07/20(金) 23:18:59 ID:V2dWSSNT
batからhta実行すりゃいいんじゃないの
233名無し~3.EXE: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}") を送ることはできません。
と書かれており試してみましたが実際に無理でした

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsMthSendKeys.asp
235名無し~3.EXE:2007/07/23(月) 19:13:56 ID:WByBtV4R
>>234
PrintScreenを押して何をしたいのかにもよるけど
フリーソフトで適当なのを使えばいいんじゃね?
ttp://search.vector.co.jp/search?query=SendKey
236名無し~3.EXE:2007/07/23(月) 20:06:40 ID:DslKxDc9
マルチ馬鹿にエサ与えんな
http://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:2007/07/23(月) 22:50:33 ID:2a12I535
%date% %time%
239名無し~3.EXE:2007/07/23(月) 23:11:15 ID:LD4VpkP3
240名無し~3.EXE:2007/07/23(月) 23:14:26 ID:ptbQjJRK
>>238
それは試したけど駄目だったです

>>239
外部アプリ使う以外では無理ッスかね
241名無し~3.EXE:2007/07/23(月) 23:45:46 ID:YzCqJVe0
NT系なら /T オプションがあるけど98にはない。
俺も昔同じ事やろうとして結局Perl使ったもの。
242名無し~3.EXE:2007/07/24(火) 00:28:47 ID:OiAr7ahv
応答ファイル作ってみては?
エンターを標準入力する

date < enter.txt
243名無し~3.EXE:2007/07/24(火) 00:54:25 ID:zyICGXlS
わざわざファイルを作らなくても
echo.|date
244名無し~3.EXE:2007/07/24(火) 01:13:51 ID:OiAr7ahv
>>243
いやーそれも考えたけど
Win98じゃあecho.が別の結果になりそうな予感がしたので止めたわけよ
245名無し~3.EXE:2007/07/24(火) 01:23:30 ID:zyICGXlS
DOS5の頃から、echo. は改行。ピリオドの代わりに / : , なども可。
246名無し~3.EXE:2007/07/24(火) 01:28:49 ID:OiAr7ahv
まあどうやってもwin98じゃあfor /fもset等での編集もできないので
外部コマンド(BATUTYとか)を使うのが良い
247名無し~3.EXE:2007/07/24(火) 01:37:25 ID:haePCbS9
>>235
目的はスクリーンショット取得の効率化です
現在はプリントスクリーンを押下してペイントに貼り付け名前をつけて保存をしています

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

社内PCにフリーソフトのインストールは禁止なのでWindows標準のソフトやスクリプトで実現したいです
よろしくお願いします
248名無し~3.EXE:2007/07/24(火) 01:43:41 ID:OiAr7ahv
ペイントなら、メニュー操作でできるじゃん。
編集(Alt+E)−すべて選択−コピー (送信するキーで言えば、Ctrl+A、Ctrl+C)
でどう?
249名無し~3.EXE:2007/07/24(火) 01:45:14 ID:OiAr7ahv
勘違い、忘れて
250名無し~3.EXE:2007/07/24(火) 01:56:13 ID:FTD7xDte
うぜぇなあ。
社内でのスクリプトも禁止にしてくれればいいのに。
251名無し~3.EXE:2007/07/24(火) 07:28:39 ID:nHmUjfkY
> 社内PCにフリーソフトのインストールは禁止
こういう会社は遠からず衰退するなw
252名無し~3.EXE:2007/07/24(火) 09:38:47 ID:hrghhaU8
逆にインストールし放題だったらそっちの方がよっぽど問題。
253名無し~3.EXE: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
255254:2007/07/24(火) 17:07:37 ID:1kH5Q7z7
すみません
自己解決しました
256名無し~3.EXE: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:2007/07/24(火) 22:41:21 ID:UeCXx0RV
EnumNetworkDrives
EnumPrinterConnections
259257:2007/07/24(火) 22:49:55 ID:cEJUopRP
vbsを今から勉強している余裕が無いんです…
バッチじゃ無理ですかね
260名無し~3.EXE: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
261257:2007/07/25(水) 00:09:05 ID:3jXjVge/
>>260
バッチでレジストリのデータ取得できるんですか!
今環境無いんですが、明日試して見ます。
ありがとうございます!
262名無し~3.EXE:2007/07/26(木) 01:04:45 ID:/KjPiacH
バッチファイルのマニュアルって無いでしょうか?
MSDNを探したけど見つかりませんでした

for /?やwindowsのヘルプでコマンド名で検索すればそのコマンドについての説明はでてくるのですが
網羅的なものや文法以外の事(例えば変数の扱いについてなど基本的なルール)が書かれている
文書が欲しいです
263名無し~3.EXE:2007/07/26(木) 01:20:39 ID:yErmTSil
>>261
コマンドでレジストリ読み書きできるのはXP/2003から
98ではできない

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

>>262
とりあえずヘルプの「コマンド ライン リファレンス」見れ
物足りなければこういうの買うか立ち読みしる
http://www.gihyo.co.jp/books/syoseki.php/4-7741-1674-2
264名無し~3.EXE: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:2007/07/26(木) 01:35:36 ID:gEngnIuG
オレが買ったのも>263の奴だ。結構良いと思うよ。
266名無し~3.EXE:2007/07/26(木) 01:55:53 ID:kf5FBSiR
とりあえずヘルプを読むといい。
仕様は全てヘルプに書かれている。
(ある特定コマンドについてはwin2000ではコマンドヘルプの方が詳しいものも一部ある。
 またどう使うか応用はサイトめぐりか本でも買え)
まあ、ヘルプファイルを不要として削除しちゃってるバカもいるけど。
一度は全部読み通してみるといい。
267名無し~3.EXE:2007/07/26(木) 02:00:19 ID:kf5FBSiR
>>264
コマンドヘルプだけでは明らかに情報不足に陥る。
それでは複雑なBATは書けない。
268名無し~3.EXE:2007/07/26(木) 02:26:44 ID:p3iWQA+4
適当に立ち寄った本屋にあったこれを買った俺は負け組み
ttp://www.amazon.co.jp/dp/4816332545
269名無し~3.EXE:2007/07/26(木) 08:12:26 ID:5Vip6UWZ
>複雑なBAT

この時点で間違ってる
複雑な処理させたければWSHなりにしろ
270257:2007/07/26(木) 13:22:22 ID:Bs03WwTU
>>260
遅くなりましたが目的の情報を取得することが出来ました。
このコマンドで他の情報も持って来れそうです
ありがとうございました

>>263
260さんの記述でレジストリのデータを読めましたよ
271名無し~3.EXE:2007/07/26(木) 14:00:30 ID:gN9jmhD8
>>269
基本だが、変数として有効な文字とか変数サイズの上限とか全体の総バッファ長とか
& && | || ; , ^ とか、0< 1> 2> 1>&2 2<&1とかWSHの呼び出し方とか
コマンドヘルプじゃわからないよ
272名無し~3.EXE:2007/07/26(木) 15:23:00 ID:Bs03WwTU
wshって素のままのWindowsOS(95からxpまで)で
バッチみたいに使えるの?
273名無し~3.EXE:2007/07/26(木) 15:50:08 ID:04gKUhKK
95は素では無理
274名無し~3.EXE: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:2007/07/27(金) 01:15:31 ID:dNpld2gr
(cd hoge >> log\normal.log) 2>> log\error.log
276名無し~3.EXE:2007/07/27(金) 01:19:42 ID:fMDvaNVV
>>274
どんな現象になるの?
cd hoge >> log\normal.log 2>> log\error.log
これでちゃんと動作したけど?
277名無し~3.EXE:2007/07/27(金) 01:22:53 ID:rXnUgSS7
>>276
cdだと動作するかもしれませんが他のコマンドだとちゃんと動作してないような・・・。
copy /Y とかで試してみると多分動かないかと。。
正しい書き方を知らない物で 正当な書き方をお聞きしたいのですが・・・。
>>275さんのが正しい書き方なのですかねぇ。

この場合( ) の中が最初に評価されるから 仮になんらかの原因( normal.logファイルへの書き込み
権限が無かったり)で、コマンドの実行自体は成功しているのにnormal.logへ書き込めなかったから
エラーだと判断されて error.logにかかれたりはしないのかなぁ・・・。
いまいちこの辺よく分からない。
278名無し~3.EXE:2007/07/27(金) 01:24:50 ID:fMDvaNVV
copy /y
dir hoge
で試したけど問題なく動作したよ
279名無し~3.EXE:2007/07/27(金) 01:37:52 ID:rXnUgSS7
>>278
マジですか・・・。 じゃあリダイレクションの問題じゃなくて
私が何か間違えているのかも。Windows版 pdumpfsを動かして検証してみたところ上手く
いかなかった物で・・・。 失礼しました。
280名無し~3.EXE:2007/07/27(金) 01:45:37 ID:/AUK6hlH
>>279
これって相対パス指定してるんだが、カレントディレクトリ配下に間違いなくlogフォルダはあるのか?
無ければ当然の結果だけど
>指定されたパスが見つかりません。
となる
281名無し~3.EXE: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:2007/07/27(金) 01:48:48 ID:rXnUgSS7
>>280
コード中に

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

ってあるのでlogフォルダは確実にあります。
283名無し~3.EXE:2007/07/27(金) 02:57:22 ID:S6Sd4k6B
>>282
どこのコマンドを使ってる?
ググってpdumpfs-w32-1.3.zipをゲットして試したら実行しても
標準(エラー)出力に何も出力されないまことに静かなるコマンドだったんだが?
284名無し~3.EXE:2007/07/27(金) 08:13:51 ID:rXnUgSS7
>>283
http://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:2007/07/27(金) 11:30:18 ID:+rjyunv5
誰も締めくくりたいなんて思っちゃいない予感
286名無し~3.EXE:2007/07/27(金) 21:28:47 ID:lyQPBbWY
82C8
82BE
82AD
82BD
82C1
82DC
287名無し~3.EXE:2007/07/27(金) 21:33:47 ID:BKYgm8FZ
まったくだな
288名無し~3.EXE:2007/07/28(土) 18:33:15 ID:a/qCxIPC
有効なドライブの一覧を表示するコマンドってないですか
289名無し~3.EXE:2007/07/28(土) 18:50:31 ID:m2ZCRxis
fsutil fsinfo drives
290288:2007/07/28(土) 18:53:48 ID:a/qCxIPC
どうもありがとう
291名無し~3.EXE:2007/07/30(月) 13:03:56 ID:BT+WwteJ
携帯から失礼します超初心者スレとマルチになってしまいますが、質問させてください

WindowsXP home editionを使用してるんですが、msconfig→システム構成ユーティリティから「BOOT.INI」にあるタブの「/SAFEBOOT(F)」にチェックを入れてセーフモードを機動したんです。セーフモードコマンドプロントの画面になり、そこから通常の時に戻れません
どうすれば元に戻せますでしょうか?
292名無し~3.EXE:2007/07/30(月) 14:58:07 ID:le5R9q0P
>>291
感だから駄目かもしれないけど。
cd c:\windows
start
293名無し~3.EXE:2007/07/30(月) 17:01:28 ID:7XlSPz/J
コマンドライン上からmsconfigやexplorerを起動するなり、
notepad c:\boot.iniするなり方法は色々あるはず。
294名無し~3.EXE: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:2007/07/31(火) 18:43:44 ID:Hu1nS5yr
0Byteのファイルの作り方がわからん

if exist C:\test2\nul echo.>C:\WINDOWS\デスクトップ\test2
297名無し~3.EXE:2007/07/31(火) 18:45:01 ID:Hu1nS5yr
>>296 ミスッた
if not exist 〜 ね
298名無し~3.EXE: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: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:2007/07/31(火) 19:36:10 ID:Hu1nS5yr
いや echo.> test.txt だと2bytesになるっしょ。
それと else とか () は使えない。
301名無し~3.EXE:2007/07/31(火) 20:24:25 ID:1QfNp2Sl
type nul > po.txt
302名無し~3.EXE: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:2007/07/31(火) 20:44:51 ID:ChlSZmRF
CreateObject ("Scripting.FileSystemObject").CreateTextFile ".\test2.txt",True
304名無し~3.EXE:2007/07/31(火) 21:11:25 ID:mIH/KnHc
俺は
copy nul hoge
でやってた
305名無し~3.EXE:2007/07/31(火) 23:22:23 ID:XA8WQJFO
>304
そっちは確かNT系のWindowsのみ可能だったはず。
306名無し~3.EXE:2007/07/31(火) 23:55:09 ID:IK31m5SS
DOS/9x系なら
rem>hoge
ってのもある。
307名無し~3.EXE:2007/08/01(水) 13:15:29 ID:3O9k4hax
0バイトのファイルを作る方法って定期的に出てくるよね。
俺の一番のお気に入りは
rem>hoge.txt
これを知ったのは20年ぐらい前のfj.os.dosあたりだったと思う。

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

エラーが出ない最小はなんだろう?
308名無し~3.EXE:2007/08/01(水) 22:21:01 ID:9V4T7tMX
cd.>fuga.txt

98/2k/Vistaで確認。
309名無し~3.EXE:2007/08/05(日) 16:18:47 ID:Bp/DvISo
XPではダメですか  つД`)・゚・。・゚゚・*:.。..。.:*・゚
310>302,305: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: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
)
313311:2007/08/07(火) 22:19:14 ID:mOWz8I7r
>>312
遅くなってすみません。
目的の動作が出来ました。
ありがとうございました!
314名無し~3.EXE: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: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: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まで。
317315:2007/08/09(木) 00:40:16 ID:YG2BLxw3
>>316
すみません。
XPで試したのですが、うまく行きません。
318名無し~3.EXE: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:2007/09/06(木) 22:24:57 ID:cBR0cADs
(for /f "tokens=1" %a in ('help') do %a /?) >help.txt
こんな感じのこと?
ファイルが長ったらしいし必要なときに必要なコマンドのヘルプだけ参照した方がいいと思うけど…
321名無し~3.EXE:2007/09/06(木) 23:33:19 ID:p7g9huyD
>>320
そうです!助かりました。ありがとうございます!
322名無し~3.EXE: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: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:2007/09/10(月) 13:18:02 ID:HtOy1mDZ
BATの質問です。
条件分岐はどの様にやれば宜しいのでしょうか。

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


ご教示、よろしくお願いいたします。
325名無し~3.EXE:2007/09/10(月) 13:51:50 ID:AyQQeB8K
>324
MD-DOS時代にはChoiceで選択できたらしい
今はそれが使えないからChoiceの代わりにこういう風にする
http://haoki.hp.infoseek.co.jp/MS-DOS/ExamplesOfBatchFiles.html
326名無し~3.EXE:2007/09/10(月) 18:29:06 ID:HtOy1mDZ
>>325
うまくいきました。
ありがとうございました。
327名無し~3.EXE:2007/09/11(火) 14:51:32 ID:tSfBcypB
WindowsNT/2000などの別売リソースキットに収録されてる CHOICE.EXE (CHOICE.COMじゃない)が
そのままXPでも使える。
328名無し~3.EXE:2007/09/11(火) 16:52:42 ID:Coumuge0
choice.exeは無償のものがMSからdownloadできる。
329名無し~3.EXE: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:2007/09/16(日) 23:47:26 ID:tctmZAgJ
>>330
無理な気がする。WSHなら出来るかもしれないが。
エクセルファイルがあるんなら、それをテキストファイルに落として、
テキストファイルからリネームさせれば?
それならバッチでもリダイレクト出来るだろう
332名無し~3.EXE: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: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:2007/09/17(月) 10:12:35 ID:P35yenRW
hoge.txtをmoveするときに目的フォルダに同名ファイルがあるとします。
そのとき、移動するファイル名に-002とかを付加してmoveすることは出来ますか?
336名無し~3.EXE:2007/09/17(月) 11:43:28 ID:qFWL8DrH
if exist でかくにんしれ
337名無し~3.EXE:2007/09/17(月) 13:40:32 ID:P35yenRW
>>336
ありがとう。やってみます。
コマンドライン初心者ですけど、頑張ります!
フィル振り分けソフトってろくなのが無いので、バッチファイルが書けるまで頑張ります!
338名無し~3.EXE:2007/09/18(火) 01:58:17 ID:gMM571jL
hoge.exe に -foo -bar オプションを付けて
いくつものフォルダ(数百個)に分散した大量のファイル(約50万個)を渡したいんですが
バッチファイルでファイル名を書いたtxtを勝手に参照してもらう方法は無いでしょうか。
あるいは他にもっと手っ取り早い方法はないでしょうか。
339名無し~3.EXE:2007/09/18(火) 03:46:19 ID:gdYBVbuE
for /f
340名無し~3.EXE:2007/09/18(火) 20:52:10 ID:VaDU0MRP
質問させてください。
FireFoxとかインストールするときに次へ進むボタンとかあるけど
batだけで全部インストール処理できますか?
341名無し~3.EXE:2007/09/18(火) 21:47:07 ID:y2b0bLvN
インストーラにそーいうオプションスイッチがあれば可能。
なければ無理。batでボタン押したりは出来ない。wsh使え。
342340:2007/09/18(火) 22:17:18 ID:VaDU0MRP
>>341
ありがとうございます。
ちょっと調べましたがwshで作ったコードを保存したら.vbsになりますよね。
ということは全てのwindows環境で実行することができませんよね?
できれば.exeとか.batでありませんでしょうか?
343名無し~3.EXE:2007/09/18(火) 22:23:59 ID:OeER2hXe
何を言っているんだ
344340:2007/09/18(火) 22:35:51 ID:VaDU0MRP
>>343
ごめんなさい。.vbsって実行できますよね。
勘違いしてたみたいですね。
ありがとうございました。
345名無し~3.EXE:2007/09/19(水) 01:45:03 ID:fRhBg93X
このスレのこのマターリ感が好きつーか殺伐とした俺漏れの仕事の疲れを癒してくれる。
Pt.2かPt.3の頃から進化しないつーか深化しないと言えばそれまでだけど。
けして悪口じゃなくて本心です。
346名無し~3.EXE:2007/09/19(水) 04:12:41 ID:xdlzKm9f
>>344
>>.vbsって実行できますよね。

できませんよ。
347340:2007/09/19(水) 09:45:46 ID:+9iiRmg+
>>346
あ、やっぱできませんでしたか。
じゃあやっぱ.batみたいな普通の環境で実行できるやつがいいな。。
wsh以外でインストーラーのボタンを押せるもの何かありますか?
348名無し~3.EXE:2007/09/19(水) 10:34:13 ID:hmqMAoL+
なんでWSHが実行できないの?禁止されてる環境なのか?
349名無し~3.EXE:2007/09/19(水) 22:42:31 ID:xdlzKm9f
>>348
Windows 3.1 とか、Win95(with out IE)とか
350名無し~3.EXE:2007/09/20(木) 11:01:44 ID:1uTHvdSs
そういやWin95のOSR2でもWSHを使える環境と使えない環境を見た覚えがある。
351名無し~3.EXE:2007/09/20(木) 11:52:07 ID:ylAti8AR
そんな昔のOSは使ってないと思うよ。
普通はvbsは実行できるはず。
352名無し~3.EXE:2007/09/22(土) 14:17:28 ID:u6hq42dc
95は場合によっては現役だったりするかもしれないけど
FireFoxってWin3.1で動くの?
353名無し~3.EXE:2007/09/22(土) 14:41:01 ID:K4jH93N6
FireFoxはNT4.0ならサポートしてるな。
354名無し~3.EXE:2007/09/23(日) 00:11:23 ID:0zXrh7do
FTPのコマンドに関する質問です。
会社と家で同じファイルの同期をとり続けるためにFTPのコマンドを使おうとしています。
(やりとりに使うサーバはさくらのレンタルサーバです)
家ではうまく接続でき、問題なくダウンロード、アップロードできるのですが、
会社ではダウンロード、アップロードがうまくいきません。
ブラウザではプロキシの設定をしているので、プロキシの設定が必要なのかと思い、
Windows標準のFTPクライアントでは不可能っぽいので諦めていたのですが、
FFFTPでは導入してすぐにダウンロードできているのでよく原因がわかりません。
詳しい方ご教授お願いします。
355名無し~3.EXE:2007/09/23(日) 00:29:56 ID:YiMPoOFi
>>354
・FTPコマンド実行時、どの段階でうまく行かなくなるのか
 実際に入力しているコマンドとそれによる標準出力を列記
 (FTPサーバ名やユーザ名等、個人情報はマスク)

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

まずは、以上について説明して下さい。
「うまくいかない」だけでは回答しようがないのです。
356名無し~3.EXE:2007/09/23(日) 00:33:47 ID:0zXrh7do
>>355
すみません……。
今家で正確なエラーメッセージの確認はできないです。月曜に確認してきます。
ただ接続はうまくいっていて、
getとputの段階でプロンプトが落ちる、という症状でした。
ログは取っていたのでそこまでわかったのですが、エラー内容までは覚えていません。
今言えるのはここまでです。失礼しました。
357名無し~3.EXE:2007/09/23(日) 09:46:45 ID:Tq1GuzbT
月曜は休みだぞ
358名無し~3.EXE:2007/09/23(日) 10:06:36 ID:ZAaCzpBz
うちの会社は出勤日だ
359名無し~3.EXE: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:2007/09/23(日) 18:38:08 ID:BAQKEi+X
そうですね。
362名無し~3.EXE:2007/09/23(日) 18:57:58 ID:/Q7UHlkY
>>356
会社だとファイヤーウォールの内側なので
FTPのデータ転送コネクション確立のための外部からの接続要求は
ファイアーウォールによって弾かれ接続できない。
従って、内側から接続要求を出す必要がある。
このためにはPASV(パッシブ)モードにして内部から接続要求を出す必要がある。
が、windowsのftpサブコマンドにはpassiveが無いので
(2000までには無かった。たぶんXPやVistaにも無かろうと思う)
もっと高機能なftpクライアントが必要。
363名無し~3.EXE:2007/09/23(日) 19:01:43 ID:/Q7UHlkY
なお、ftpコマンドでダメでもExplorerやInternet ExplorerではPASVモードを
サポートしてるのでアクセス可能
364名無し~3.EXE: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:2007/09/24(月) 19:00:56 ID:+Pu3qWa3
>>362
今日会社でその結論にたどり着きました。

諦めてFFFTPでやりとりしようと思います。
家では自動化できるだけマシと思いつつ……。
367名無し~3.EXE:2007/09/25(火) 09:21:29 ID:qp05KsMz
FFFTPでも簡単なことならコマンドラインで指定できるけどね。
ncftpを使ったほうがいいかも。
368名無し~3.EXE:2007/09/29(土) 12:59:58 ID:rhAGaWpx
ファイル名にAとBが含まれているのを選択してmoveしたいのですが、どうしたらいいのでしょうか?
*A*B*と*B*A*と書く方法しか知らないので、ご教授をお願いします。
369名無し~3.EXE:2007/09/29(土) 19:13:18 ID:ONh9+IA8
WindowsのCUI、バージョンアップするたびに強化され、GUI経由でしか出来ないことが減ってきて
管理しやすくなってきたけど、Windows Server 2008ではついにエクスプローラシェルの排除まで
出来るようになるらしい。
http://www.atmarkit.co.jp/fwin2k/winsv2008/01overview/01overview_04.html
370名無し~3.EXE:2007/09/29(土) 19:18:04 ID:ONh9+IA8
この勢いで次バージョンあたりでキャラクタコンソールのみのインストールオプションも付けてほしい。
371名無し~3.EXE: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:2007/09/29(土) 23:16:34 ID:dWv53Cay
>>368
AとBはそれぞれ一個ずつなのか?それとも重複してもいいのか?例 aaabbaaa.txt
また、aとbは文字通りの一文字なのか?それともwordなのか?
まあ、forとfindstrを組み合わせて(必要ならパイプでデータ受け渡し)、正規表現でヒットさせろよ
373名無し~3.EXE:2007/09/30(日) 02:06:32 ID:i+tF55N1
>>372
ありがとうございます。重複してもいいです。
具体的にはファイル名に「福田康夫」と「国会」の2つを順不同で含むファイルをC:\福田康夫\国会へ移動したいのです。
名前が100人分、案件が各20件で計2000の振り分け条件で振り分けたいのですが、フリーソフトを使うとCPU使用率が100%に張り付くので
パッチ処理にトライしている次第です。
ご教授の方法でトライします。結果を報告できるようがんばります。
374名無し~3.EXE: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
375373:2007/09/30(日) 05:04:24 ID:/1yS/Qr0
>>374
今、酔っぱらっていますが、すっげー感激。
明日、素面になったらやってみます。
マジ、感激してます。ありがとう御座います。
376名無し~3.EXE: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:2007/10/05(金) 08:42:31 ID:/YK8Gma1
いつ中断してもいいよ
378名無し~3.EXE:2007/11/01(木) 15:30:20 ID:5dS7zZtr
hosyu
379名無し~3.EXE:2007/11/04(日) 07:04:04 ID:V+2wa1CI
今日初めて知ったこと

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

変数名書かなければ、計算出来たのか。
380名無し~3.EXE:2007/11/05(月) 00:18:42 ID:lgskxUHc
C:\>set /a x=7*7
49
381名無し~3.EXE:2007/11/06(火) 16:25:05 ID:+zVUig6T
バッチの中だと出ないのー
382名無し~3.EXE:2007/11/06(火) 21:22:54 ID:8wMnx2Yd
変数名書こうと書くまいと
プロンプトからなら答えが出るし
バッチからだと出ない
383名無し~3.EXE:2007/11/07(水) 14:38:44 ID:TznxkJFx
質問させてください。
ドライブレターの変更ってどうやったらよいでしょうか?
ハードディスクのレターがAになってるので、Cに変えようと思ったのですが、
コマンドがわからず・・・
384名無し~3.EXE:2007/11/07(水) 14:52:48 ID:BlzrMWmf
カレントディレクトリを変更したいのか、
システム的にドライブレターを変更したいのか、
どっち?
カレントディレクトリの変更ならこのスレ的だろうけど、
システム的にドライブレターを変更したいならここじゃないと思うよ
385名無し~3.EXE:2007/11/07(水) 15:09:18 ID:JFoxjGSq
>>383
HDDがAってどんな環境だ。
PC-9821にWin98でも入れてんのなら、基本的に再インストールしかないと思うよ。
システムの入ったドライブは簡単には移動できないから。
386名無し~3.EXE: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:2007/11/07(水) 18:41:55 ID:fWyPbxkF
>>387
インスコ時、ATオプションをつけるとHDDがCになったような希ガス。
外部コマンドのSUBSTでやりくりするとか。
うろ覚えなのでゲイツにでも聞いてくれ。
389名無し~3.EXE:2007/11/07(水) 19:05:03 ID:3xhNtlCa
XPなら、コマンドでドライブレターの変更はできるが
それでもシステム、ブート、ページングのボリュームのドライブレターは変更できないよ
390名無し~3.EXE:2007/11/07(水) 20:43:48 ID:9JvKdpgS
物持ち良いな、98かぁ
391名無し~3.EXE:2007/11/07(水) 22:46:47 ID:TznxkJFx
>>388
ちょっとその方法試してみます。
なんかダメポい気もするので、駄目だったらおとなしくAで使っときます(^^

392名無し~3.EXE:2007/11/07(水) 23:28:26 ID:XEtIoW0A
HDDをCにするとA,Bが当然FDDになるんだけど
1FDDの場合間違ってBにアクセスするとブラックスクリーンになるんだよね〜
害はないけど。
393名無し~3.EXE:2007/11/14(水) 01:13:59 ID:iPd4DuNf
2003のコマンドプロンプトで入力途中ついTabキー押したら
ファイル名が補完されて驚いたよ
なんだいLinuxに負けず劣らず便利じゃねぇか

ついでに dir の代わりに ls で
ディレクトリ内容も表示してくれるといいなぁ
394名無し~3.EXE:2007/11/14(水) 01:25:55 ID:TY8Yz81u
doskey ls=dir
395名無し~3.EXE:2007/11/14(水) 01:29:57 ID:PZU5+JwT
>>393
doskey ls=dir /w $*
396名無し~3.EXE:2007/11/14(水) 02:32:20 ID:M6m1VNvq
>>393
powershell入れたらいいと思うよ
397名無し~3.EXE:2007/11/15(木) 01:36:03 ID:wRAvcu5i
>>394-396
ありがとー

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

Powershellってのもなかなか良さそうだ
今度時間のある時に入れてみよう
398名無し~3.EXE: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:2007/11/29(木) 22:37:36 ID:83NzChea
rundll32.exe MSHTML.DLL,PrintHTML エクセルのファイル
401名無し~3.EXE:2007/11/30(金) 04:00:36 ID:tDpWdtj8
402名無し~3.EXE:2007/11/30(金) 12:46:09 ID:tDpWdtj8
403名無し~3.EXE:2007/12/02(日) 00:11:24 ID:xxMGDSmd
スクリプト使わずにバッチファイルでできんのか?
404名無し~3.EXE:2007/12/02(日) 09:46:33 ID:kErETC/K
バッチファイルってバッチスクリプトを記述したファイルだと思ってたんだけど違うんですね
405名無し~3.EXE:2007/12/02(日) 23:19:31 ID:vAy7xVi5
「バッチスクリプト」って単語を20年パソコン使ってきて初めて聞いた
406名無し~3.EXE:2007/12/02(日) 23:26:41 ID:Y59hieEz
ヘルプには以下のようにある。
>バッチ プログラムまたはスクリプトとも呼ばれるバッチ ファイルを使用すると、
>簡単にルーチン作業または繰り返し作業を行うことができます。
>バッチ ファイルとは、純粋なテキスト ファイルで、1 つ以上のコマンドが含まれており、
>ファイル名拡張子として .bat または .cmd が付いています。
>コマンド プロンプトでそのファイル名を入力すると、Cmd.exe によって
>ファイルに記述されている順番でコマンドが実行されます。
>バッチ ファイルには、任意のコマンドを記述できます。for、goto、if などの特定のコマンドを使用すると、
>バッチ ファイル内のコマンドを条件に応じて実行できます。
>たとえば、if コマンドでは、条件の結果に基づいてコマンドが実行されます。
>そのほかのコマンドを使って、入出力を制御したり、ほかのバッチ ファイルを呼び出すこともできます。
>ほとんどのアプリケーションが返す標準エラー コードは、エラーが発生していない場合は 0、
>エラーが発生した場合は 1 (またはそれ以上の値) です。
>特定のエラー コードの意味を調べるには、アプリケーションのヘルプ ドキュメントを参照してください。
407名無し~3.EXE:2007/12/03(月) 19:35:11 ID:RVtK1L0R
確かにあまり使わないけど、解説本等では目にするよ。
「バッチスクリプト」って。
そもそもスクリプトじゃ何のスクリプトか分からんだろ。
408名無し~3.EXE:2007/12/03(月) 23:25:21 ID:UMhrU1NK
利用可能なコマンド一覧を表示するコマンド無いですか?
409名無し~3.EXE:2007/12/03(月) 23:39:22 ID:uge6z7Xo
ん?helpじゃいかんのか?
それともパスの通ってるところにある全実行ファイルってこと?
410名無し~3.EXE:2007/12/04(火) 00:39:55 ID:Y8Lltu0y
某むゎかふぃーのサポート(しかも法人相手の有償サポ)は
「ウィルスが検知された時にバッチプログラムを実行する機能」が
正常にバッチを実行しない旨、問い合わせをしたら
「EXEファイルしかサポートしてません」とホザきやがったよ。
411名無し~3.EXE:2007/12/04(火) 00:44:09 ID:z2LH0I31
WindowsはEXEファイルしか実行できないんだからそれで十分だろ
412名無し~3.EXE:2007/12/04(火) 00:47:38 ID:K6BIfF3b
てゆーか
「ウィルスが検知された時にバッチプログラムを実行する機能」
と銘打ってるんなら、ダメだろw動かなきゃ
413名無し~3.EXE:2007/12/11(火) 18:01:11 ID:m8423oGD
Windows XPで
cmd.exeを実行したときのコンソールウィンドウの編集モードを
デフォルトで簡易編集モードに設定する方法はないのでしょうか?

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

参考(役に立たなかった説明)
http://support.microsoft.com/kb/282301/ja
WinXP ではコマンド プロンプトの簡易編集モードが既定で無効
414名無し~3.EXE: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: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:2007/12/15(土) 20:59:33 ID:wVP0mofE
taskkill /?
419名無し~3.EXE:2007/12/15(土) 21:07:05 ID:83Egwg+h
OSは?2000とかならtaskkillはないよ
サポート ツールにkillがある
420名無し~3.EXE: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: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:2007/12/15(土) 21:34:47 ID:lBxshq29
exitをSysExにして送信すればよい
424名無し~3.EXE: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:2007/12/16(日) 02:07:48 ID:4FMgTbfK
>>424は無視ですかそうですか
427名無し~3.EXE:2007/12/17(月) 23:08:28 ID:BFIgzHr0
2000 Support Toolsのkill.exeやtlist.exはMSからダウンロードできない?
428名無し~3.EXE: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: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:2007/12/26(水) 18:48:14 ID:Jz+7hx4Q
しかし誘導厨とはウザいものだな
432名無し~3.EXE:2007/12/26(水) 19:00:57 ID:low3Iayr
向こうのスレとの住みわけ範囲がよく分からない
何話したいんだろうな、向こうは
forとifのオプションの話しか出来ないような気も
433名無し~3.EXE:2007/12/26(水) 22:59:07 ID:RLSVoyeP
んなこたぁ無い

住み分けとかじゃなく、単に捉え方の差だと思う
本来、両方で存在してても全く問題ないと思うんだが
434名無し~3.EXE:2007/12/26(水) 23:06:03 ID:low3Iayr
うん、まぁ住民の大半が被ってるとは思うんだけど
外部コマンドに頼る、又は実用的なものはココ
文法的なこと、ロジカルな問題がアッチ、ってとらえ方であってる?
435名無し~3.EXE: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: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:2007/12/27(木) 18:27:49 ID:3yzeEI0b
つぎ誘導されてきたらそのまま誘導し返そうか
440名無し~3.EXE:2007/12/27(木) 20:54:45 ID:poBRtKPI
やめとけ。荒れるだけ
441名無し~3.EXE:2007/12/28(金) 01:19:39 ID:f9N/29cr
基地害が誘導してきたものはそのまま誘導し返してok
442名無し~3.EXE:2007/12/28(金) 01:32:06 ID:yjdMHYge
みんな、スルー力を高めようぜ
443名無し~3.EXE:2007/12/28(金) 07:44:57 ID:ElkJaKCc
向こうってどのスレ?好奇心で覗きにいきたんだけど。
444名無し~3.EXE:2007/12/28(金) 10:13:04 ID:70uw9AsQ
【.cmd】 バッチファイルスクリプト %2 【.bat】
ttp://pc11.2ch.net/test/read.cgi/tech/1197881068/
445名無し~3.EXE:2007/12/28(金) 16:31:06 ID:yjdMHYge
どっちのスレで何聞いてもいいと思うんだが。

状況知らない人に説明すると、向こうのスレには基地外が
一人いて(こっちも見てるはず?)なんでもかんでも、こっちに
誘導しようとしている。
446名無し~3.EXE:2007/12/28(金) 21:45:28 ID:LlF9YfFL
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: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: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:2008/01/20(日) 19:37:05 ID:WxOVD6GN
パンツ入れかよ
453名無し~3.EXE:2008/01/20(日) 20:49:39 ID:KKGepza4
>452
今の人はブリーフケース知らんかもな。
確かWin98辺りまではあったよ。そういう機能が。
454名無し~3.EXE:2008/01/20(日) 21:45:54 ID:/whP3Oqq
95〜Vistaまで、すべて入ってるような気がするが・・・・
455名無し~3.EXE:2008/01/20(日) 22:27:18 ID:T0Gjpk8k
俺は存在自体忘れてたがな
456名無し~3.EXE:2008/01/20(日) 23:58:23 ID:nLJrkLME
名前は知ってるけど使い方は知らん
457名無し~3.EXE:2008/01/21(月) 01:01:11 ID:B/YHJUBh
いつのまにかにclipなんてコマンドが加わってるんだね
458名無し~3.EXE:2008/01/21(月) 01:39:44 ID:fDwpgtYX
>>453
いま西暦何年か言えますか?
459名無し~3.EXE:2008/01/21(月) 02:55:37 ID:Phaws+EF
Win98以前は初期状態のデスクトップにブリーフケースが置かれていたんだよ。
2000になって置かれなくなった。
今でも新規作成から作ることはできるけど、98以降は影が薄くなったのは確か。
460名無し~3.EXE:2008/01/21(月) 08:24:29 ID:Gr9XxhBx
昔、おじいさんがゲイツかなんかに
「わしは何年もつかっとるが未だにブリーフケースの使い道がワカランのじゃ」
みたいに言うジョークがあったな
探してみたけど見つからない、コピペじゃないのかな
461名無し~3.EXE:2008/01/25(金) 00:18:26 ID:8TpBX6Fi
Vista で、Linux の su や sudo に当たるコマンドはありますか?
コマンドプロンプトで操作している時に、一時的に管理者としてコマンドを実行したいのですが…
462名無し~3.EXE:2008/01/25(金) 00:41:00 ID:Bm6HNp9A
>>459
Vistaでも相変わらず作れるしな。誰も使わないのに。
463名無し~3.EXE:2008/01/25(金) 03:11:50 ID:u/EeCoz3
>>461
runas
464名無し~3.EXE: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:2008/01/28(月) 18:32:38 ID:hAUaBHMX
>>465
何がしたいのか、よくわからないんだけど、
具体的に、どんな場面で便利になるの?
467名無し~3.EXE: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:2008/01/28(月) 21:33:41 ID:saC0IqhL
>でも 実行ファイルの ショートカットが 本体と違う挙動を するのって 気になりません?

そんなはずないけど
470名無し~3.EXE: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:2008/01/28(月) 21:56:33 ID:qpO8RM3B
ショートカットの作業フォルダに%0
472名無し~3.EXE: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:2008/01/29(火) 01:07:24 ID:HWw+z0EO
474名無し~3.EXE: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: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: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: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:2008/01/31(木) 01:03:19 ID:eBoblFAp
>>477
初心者スレ池
481名無し~3.EXE:2008/01/31(木) 10:58:16 ID:Zu1cJ4hG
>>480
わかりました、すみません
482名無し~3.EXE:2008/01/31(木) 19:06:40 ID:CwN/BF0B
>>474
遅レスすまそ。
command /c で出来た。アリガトン

command.comが関係しとるとは思わなんだ。
NT系列では必要の無い操作だから
wowの仕様が微妙に違うんだな。
勉強になったよ。
483名無し~3.EXE:2008/02/01(金) 01:45:58 ID:zNm7t6Hy
9xなら JS2COM 使えば?
484名無し~3.EXE: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:2008/02/07(木) 09:48:44 ID:i1Y+9IDF
for/?
487名無し~3.EXE:2008/02/07(木) 19:35:04 ID:JJWunJvn
>>486
ありがとうございます!できました!
488名無し~3.EXE: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:2008/02/16(土) 17:23:01 ID:gHdxG/Ym
うそだろ、そんなわけない
490名無し~3.EXE:2008/02/16(土) 17:41:52 ID:gHdxG/Ym
ごめん、ほんとだ。ドロップハンドラの障害だから、
VBSFileのドロップハンドラをbatfileに指定してやればいいよ。
491名無し~3.EXE: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:2008/02/16(土) 18:29:02 ID:bHZJ+HSt
>>490
入れ違いになってしまいましたが、ありがとうございます。
これは一種のバグ・・・でいいんでしょうか?
問題は自分がVBSのことが全くわからないことですね orz
493名無し~3.EXE:2008/02/16(土) 19:00:54 ID:gHdxG/Ym
>問題は自分がVBSのことが全くわからないことですね orz
VBSはかんけーねー
VBSFileのドロップハンドラを借用するだけ

あるいは、回避策
c:\tempをc:\temp folderにすれば?
494名無し~3.EXE:2008/02/16(土) 19:58:43 ID:gHdxG/Ym
ドロップハンドラはかんけーねーみたい
cmd.exeの引数分離の障害仕様だね
495名無し~3.EXE:2008/02/16(土) 20:13:55 ID:bHZJ+HSt
>>493-494
どうもありがとうございます。ドロップパンドラはググっても理解できません
でしたが、これで踏ん切りがついたので回避策を使うことにします。

仕様か、なんて全てを包み込むような包容力のある言葉なんd(ry
496名無し~3.EXE:2008/02/28(木) 23:52:46 ID:hFNRGAEX
Vistaのコマンドプロンプトに以前のようにファイルをドロップしたいのですが
ウラワザとかありませんか?
497名無し~3.EXE:2008/02/29(金) 00:32:17 ID:le6aVPk+
498名無し~3.EXE:2008/02/29(金) 00:41:18 ID:fnZx8Tum
>>497
具体的にどのセキュリティ強化が原因で使えなくなってるかわかりますか?

「指が滑った時」対策だったら泣ける。
499名無し~3.EXE:2008/02/29(金) 01:41:43 ID:MYE21105
てかそんなこと出来たのか。
500名無し~3.EXE: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: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:2008/03/01(土) 21:52:32 ID:INNPJ5X6
XPならErrorLevelで。
503名無し~3.EXE: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 (
504500: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:2008/03/03(月) 23:03:40 ID:criNZiK5
つ 遅延環境変数
507名無し~3.EXE:2008/03/04(火) 00:32:51 ID:JYsrlTMe
できました。感動です
理屈はよくわからないですが大括弧小括弧みたいなイメージでいいんですか

とりあえずバッチでオセロ作るのを目標にがんばっています
508名無し~3.EXE:2008/03/04(火) 00:36:48 ID:Xq8J3uel
つ遅延展開
509名無し~3.EXE:2008/03/04(火) 00:39:21 ID:VMDLSFIe
>>507
> 大括弧小括弧みたいなイメージ

全然違う。
即時展開される変数は、バッチファイルを読み込んだ時点で置換されてるので
実行時は変数ではなく定数になっている。
510名無し~3.EXE:2008/03/04(火) 00:57:01 ID:JYsrlTMe
ん〜

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

なのでバッチを読み込んだ時点で云々というのは腑に落ちないんですが。
511名無し~3.EXE:2008/03/04(火) 01:03:31 ID:/r2l60M6
1行実行するごとにバッチファイルを読み込みなおしてるんだよ。
だから自己書き換え型のbatも作れる。
512名無し~3.EXE: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
お札の都市伝説発見!


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

画像が表示されたら右クリック、Iを押す→Pを押す
514名無し~3.EXE:2008/03/04(火) 17:21:53 ID:JYzbQmWK
しへいのいんさつははんざいですよ
515名無し~3.EXE:2008/03/04(火) 17:44:24 ID:r5xViyTY
普通に印刷できちゃったんだけど
516名無し~3.EXE:2008/03/04(火) 17:49:28 ID:DEYMSbAn
>>513
すばらしい。新種のソーシャルウイルスだな
517名無し~3.EXE:2008/03/05(水) 04:23:16 ID:OmO7J7IA
できるのとやってはいけないのは別・・・

コピー機やオフセット印刷機はプロテクトがあって出来ないらしいけど。
518名無し~3.EXE:2008/03/08(土) 13:02:22 ID:t1Hf5Bsj
コマンドプロンプトで押したキーをそのまま取得する方法はないですよね?
PAUSEで押したキーを変数にセットするような。
519名無し~3.EXE:2008/03/08(土) 13:31:31 ID:ghC3PRgD
set /p AAA=なんか入力
520名無し~3.EXE:2008/03/08(土) 15:53:09 ID:qQq+YK5u
通りすがりです。
set にオプションあったのかあ。勉強になりました。
521名無し~3.EXE:2008/03/08(土) 18:00:16 ID:t1Hf5Bsj
すいません

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

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

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

でもなさげですね
522名無し~3.EXE:2008/03/08(土) 18:37:48 ID:TBGhFK6F
choice.exeを使え
523名無し~3.EXE: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:2008/03/12(水) 22:16:39 ID:ujpaACV/
>>513
何が起きるの?
プリンタないから確認できん。
526名無し~3.EXE:2008/03/12(水) 22:24:33 ID:wj+st/27
>>525
ご飯が一日3度、定期的に出ます
527名無し~3.EXE:2008/03/13(木) 00:17:06 ID:0XIdaW4C
set wao=wa^ o
if "%wao%"=="%wao%" echo wao
528名無し~3.EXE:2008/03/13(木) 00:24:53 ID:eYgnqYL9
>527
ありがとうございます…
これでまた頑張れます
529名無し~3.EXE:2008/03/13(木) 02:09:43 ID:xekHwBEI
setlocal enabledelayedexpansion
set wao=wa o
if !wao!==!wao! echo wao
530名無し~3.EXE:2008/03/14(金) 21:41:09 ID:Fj5KIEt7
パイプで渡された文字列を環境変数にSETするバッチを書くことって可能?
ECHO HOGE | XSET.BAT で%XSET%にHOGEが入るような。
もしくはそういう補助ツールってあります?ぐぐっても見つからんかった。

結構よくやる処理なので、手軽に使えるようにコマンド化できればな、と。
531名無し~3.EXE:2008/03/14(金) 22:12:27 ID:k/rPIO78
for /f %%x in ('more') do set xset=%%x

532名無し~3.EXE: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:2008/03/14(金) 23:15:53 ID:k/rPIO78
パイプの前後はそれぞれ子プロセスで実行される
534名無し~3.EXE:2008/03/14(金) 23:24:24 ID:k/rPIO78
for /f %%x in ('ECHO HOGE') do set xset=%%x
535名無し~3.EXE:2008/03/14(金) 23:42:36 ID:Fj5KIEt7
>533
つまりバッチで>530を実現するのは無理ってことですか?

>534
530が出来ればバッチの中でそれやらなくても良いのにな
ってのがスタートだったので。
536名無し~3.EXE:2008/03/15(土) 03:52:41 ID:1v13GlOD
>もしくはそういう補助ツールってあります?ぐぐっても見つからんかった。

それは子プロセスで実行される
537名無し~3.EXE: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: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:2008/03/15(土) 20:29:29 ID:1v13GlOD
set/?
540名無し~3.EXE:2008/03/17(月) 19:17:48 ID:4TC48wem
>>538
"delims="とは区切りなしで「test AAC PID * DELAY *ms.aac」全部を%Aに入れることを意味する。
バラバラで入れたければ区切り文字を設定してトークンで必要なものだけ取り出す。
for /? をちゃんと読むべし。
541名無し~3.EXE: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:2008/03/20(木) 02:09:01 ID:vljTMuMh
>>541
1文字ずつ切り出して比較すりゃいいじゃん。
543名無し~3.EXE:2008/03/20(木) 02:59:37 ID:TH4V7lbY
要点を2行くらいで言えない?
544名無し~3.EXE:2008/03/20(木) 05:21:26 ID:N1GwNiEt
"test AAC PID * DELAY *ms.aac"(testと*は変動)から
*(-を含む数字,桁数変動)を抜き出して環境変数にsetしたい。
545名無し~3.EXE:2008/03/20(木) 05:26:18 ID:N1GwNiEt
>539な気がする。
546名無し~3.EXE:2008/03/20(木) 08:46:33 ID:YOGH1HJm
*内にmが無いならスペースとmを区切り文字にして4番と6番をゲットすればいい。
547名無し~3.EXE: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:2008/03/20(木) 10:16:11 ID:YOGH1HJm
こういうのはWSH使って正規表現で一発でやりゃいいのによ。
549名無し~3.EXE:2008/03/20(木) 13:38:49 ID:TH4V7lbY
これにて一件落着
550名無し~3.EXE: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:2008/03/20(木) 20:07:48 ID:TH4V7lbY
>もうバッチで一千行以上書いてしまったので今更後には引けないというw

逆だな。バッチで一千行以上も書くようなら、やめたほうがいいな。
552名無し~3.EXE:2008/03/20(木) 21:27:38 ID:YOGH1HJm
俺もWSHなりで書き直した方がいいと思うぞ。千行が百行になったりしてな。

…さすがにそれはないか?
数百にはなりそうだが。
553名無し~3.EXE:2008/03/21(金) 01:36:37 ID:undob5I3
>544で2行でまとめられる内容を>537-538に渡って延々と
書き続けてるくらいだからバッチでも数百行にできるんじゃねーの?w
554名無し~3.EXE:2008/03/21(金) 01:38:20 ID:AMlsUloI
情報小出しにされるより一千倍マシ
555名無し~3.EXE:2008/03/21(金) 03:56:18 ID:shXKIS+x
具体的に何がしたいか?を書けば話題に飢えたこのスレの住人なら自分で作りそうな。
556名無し~3.EXE:2008/03/21(金) 14:08:15 ID:1ACbc417
>具体的に何がしたいか?を書けば

って何千行にもなりそうな
557名無し~3.EXE:2008/03/22(土) 01:00:18 ID:gZSy0T3O
可愛い女の子とセクースしたいが自分じゃ無理だ
558名無し~3.EXE: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:2008/03/24(月) 02:52:27 ID:8aWQMqjf
そのうち900行はコメントだったりして
560名無し~3.EXE: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: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:2008/03/24(月) 15:09:10 ID:0QXfngW0
>>563
start /?
特に、""で囲った1つ目が何を意味することになるか良く考えること。
566名無し~3.EXE:2008/03/24(月) 15:10:02 ID:mqeigdTH
>563
前者は、カレントディレクトリかパスの通ったディレクトリに×××.exeが無いと動かない。

後者はタイトルと認識されてしまうので

start "" "C:\〜\×××.exe"

と書いた方が良さげ。
567名無し~3.EXE:2008/03/24(月) 15:10:06 ID:qluytLNu
start/?
568563:2008/03/24(月) 18:27:25 ID:GUB5eIlQ
>>565-567
うまく起動しました。
本当にありがとうございました。
やっぱこっちで聞いたのは正解でした。m(_ _)m
569名無し~3.EXE:2008/03/25(火) 00:39:16 ID:XIhyPtz1
>568
それ、向こうの普通の住人に軽く失礼だよ。
570名無し~3.EXE:2008/03/25(火) 10:19:16 ID:KGCFsKLj
>>569
あそこのスレ覗いてみたら、酷いからw
まあ言われて当然だけどな
571名無し~3.EXE:2008/03/25(火) 11:42:47 ID:ivCYVsqO
で、そのスレとはどこ?
572名無し~3.EXE:2008/03/25(火) 11:44:47 ID:GVezYnPG
あそこはリアル精神障害者の粘着がいて
なんでもかんでもここに誘導しようとするのな
573名無し~3.EXE:2008/03/25(火) 11:54:02 ID:1y11T6/h
>>571
スレっていうか板だけどな。
ム板バッチファイルスレ。
574名無し~3.EXE:2008/03/25(火) 19:01:19 ID:+d3VDJbp
好きでキチガイの相手してるワケじゃないんだがなぁ…。
バッチ以外の話は一切誘導しないのに、バッチの話が始まると
必ず、パソコンの使い方はWin板のコマンドスレへ、と誘導する。
575名無し~3.EXE:2008/03/26(水) 13:18:41 ID:gE4+Tmq6
>>561
net stopが裏でやっていることとUnixシグナルの仕組みは別物。
576名無し~3.EXE: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: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:2008/03/29(土) 02:32:04 ID:cjLqnGDe
それは
xxxで実行できるものはほぼcall xxxで実行できる
581名無し~3.EXE:2008/03/29(土) 17:57:31 ID:e7BCQMf+
call って start みたいなものなんだなって思ったんですが、
むしろ cmd /c と等価と考えればいいのかな。
start は cmd /k ですか。
582名無し~3.EXE:2008/03/29(土) 18:04:25 ID:cjLqnGDe
そういう妄想は無意味だ
所詮にてるところもあればちがうところもある
583名無し~3.EXE:2008/03/29(土) 18:20:32 ID:e7BCQMf+
まあそうなんですが、そう考えると分かりやすいので…

明らかに違うのは、 cmd /c だと当然のように cmd.exe がもう一つ
実行されることですね。これは環境変数に影響しますね。
ほかにも違いはあるのかな。
584名無し~3.EXE:2008/03/29(土) 18:27:52 ID:cjLqnGDe
call notepad.exe
cmd/c notepad.exe
だけみれば
call≒start
cmd/c≒start/w
になるし意味ないだろ?
585名無し~3.EXE:2008/03/29(土) 18:51:15 ID:e7BCQMf+
なるほど。そういう動きしますね。
確かに「等価」なんて書くのは乱暴でした。

hoge.cmd がある環境と hoge.exe がある環境があって、
これを呼び出すバッチを両方の環境で共通にしたいと
思っていたのですが、call dir とか何気なく実行して
みたら思いがけず結果がでてきて>>576を書きました。

幸いexeはコンソールアプリケーションだったのでcallで
バッチもexeも実行できそうなんですが、そうでなかったら
やっぱり切り分けする必要がありそうですね。

いろいろ知識が増えました。ありがとうございます。
586名無し~3.EXE: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:2008/04/04(金) 16:31:21 ID:O5RX4LBM
FOR %i IN (*.txt) DO @if %~xi==.txt echo %i
588名無し~3.EXE: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:2008/04/04(金) 18:49:16 ID:O5RX4LBM
謎なものか
dir /x してみ
590名無し~3.EXE:2008/04/04(金) 19:14:07 ID:c0lFiKIy
>>587-589
出来ました

こういう仕様になってるのには何か深い理由がありそうですね。
こういう事情を知らずに各種ソフトの.iniファイルを別のものに一時交換するときに
.iniAAAAA とかを多用しているので困っていました
どうもありがとうございました
591590: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:2008/04/04(金) 20:15:21 ID:7OrQUO4u
8.3名の生成機能、もういい加減デフォルトOffにすべきだよなぁ。。。
つーか10年くらい前でもよかった。
593名無し~3.EXE:2008/04/05(土) 07:25:56 ID:16jOobyH
DOS時代に「名前8文字」「拡張子3文字」だったのを未だに引きずってるんだなあ。
594名無し~3.EXE: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:2008/04/05(土) 19:19:45 ID:oeBKfFDa
補足しますと
newファイル出力だけが必要で、画面表示は必要ないということです
&&echo %*を&&(echo %*)>>new.txtとかに変えても全部エラーでした
596名無し~3.EXE:2008/04/05(土) 20:21:46 ID:opCsAdvJ
uniq.bat >new.txt
597名無し~3.EXE:2008/04/06(日) 13:45:44 ID:+PcLNC77
uniq.bat file.txt>new.txt
でしょ。

ところで、画面への出力とファイルへの出力を同時にやる方法は無いのかな?
内部で交互に出力しなきゃダメ?
598名無し~3.EXE:2008/04/06(日) 16:21:31 ID:nlrXvzZ0
>uniq.bat file.txt>new.txt
>でしょ。

はて、なんか違ってるのかな?

>ところで、画面への出力とファイルへの出力を同時にやる方法は無いのかな?

あるけど?
599名無し~3.EXE:2008/04/06(日) 18:07:00 ID:wqKcgo9M
>>598
> はて、なんか違ってるのかな?
> あるけど?
無知蒙昧の煽り厨かよ。
役立つ情報を書けないんなら書くなヴォケ!
600名無し~3.EXE:2008/04/06(日) 18:31:05 ID:nlrXvzZ0
601名無し~3.EXE: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:2008/04/06(日) 18:55:56 ID:nlrXvzZ0
>>601
>>uniq.bat file.txt>new.txt
>>でしょ。
>はて、なんか違ってるのかな?

のほうは?
605名無し~3.EXE:2008/04/06(日) 18:58:08 ID:+PcLNC77
>>604
単なる煽りなのか?

:error 以降の出力を得たいだけだったら別にfile.txtは要らんけどな。
そんな池沼レスする気だったの?
606名無し~3.EXE:2008/04/06(日) 19:06:41 ID:c2QC8Myi
最近2chで増えつつある、出し惜しみ厨の典型だな
607名無し~3.EXE:2008/04/06(日) 19:10:36 ID:+PcLNC77
出し惜しみどころか最初から知らないような気がしてきたよ。

やりたいことはmencoderの画面出力をそのままログファイルにも残したいってことなんだけど。
stdoutをそのままファイルにリダイレクトしてしまうとエンコード中の進行度が見れない。
608名無し~3.EXE:2008/04/06(日) 19:12:59 ID:nlrXvzZ0
ぷっ
609名無し~3.EXE:2008/04/06(日) 19:25:04 ID:c2QC8Myi
>>607
tee.exe T 字型二股ソケット でググれば、たぶんできると思う。
が、俺はやったこと無いが興味はあるので、成功したら、やりかたと結果を書いてくれ
610名無し~3.EXE:2008/04/06(日) 19:35:33 ID:+PcLNC77
>>609
ありがとう。

あんまり使ってないけどcygwinは入れてたんだった。数種類のコマンドしか使ったこと無かったから
存在を知らんかったorz
tee.exe あったよw
611名無し~3.EXE:2008/04/06(日) 19:51:04 ID:+PcLNC77
>>609
mencoder 色々オプション | tee -a log.txt

これで画面出力と同じものをファイルにゲットできた。
厳密にはちょっと違うけど、それは元々わかってた問題だからOK。

どこかの口だけさんと違って感謝!
612名無し~3.EXE:2008/04/06(日) 19:58:49 ID:nlrXvzZ0
teeでなくてもできるけどw
613名無し~3.EXE: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:2008/04/12(土) 14:20:05 ID:psbvetMj
cygwin使わずにできんのか
617名無し~3.EXE:2008/04/12(土) 21:34:37 ID:8rjR8tpP
動画をバッチ処理したいのですが
解像度かアスペクト比で処理を分岐させたい場合
どのように書けばよいでしょうか?
618名無し~3.EXE:2008/04/12(土) 21:55:12 ID:frEZV/rR
if
619617:2008/04/12(土) 22:10:27 ID:8rjR8tpP
>>618
もう少し具体的な回答をお願いします。
例えば解像度が1280x720の場合
echo LanczosResize(428,320)>> %avsfile%
解像度が960x720の場合
echo LanczosResize(480,270)>> %avsfile%
と処理を分岐させたい時
どのように書けばよいでしょうか?
620名無し~3.EXE:2008/04/12(土) 22:14:42 ID:bsDmcclx
具体的にって言われても動画の解像度なんて映画館によってまちまちだろ?
621名無し~3.EXE:2008/04/12(土) 22:16:01 ID:6vn8GrIL
動画の解像度情報とかバッチファイル中でどうやって取得する気かと小一時間(ry
いやもしそういったツールがあるなら俺も是非欲しいが
622名無し~3.EXE:2008/04/12(土) 22:40:15 ID:8rjR8tpP
>>621
クリップボードに解像度情報などを送るソフトはあります。
ttp://kurohane.net/seisanbutu.phtml
にある真空波動研SuperLite
です。
2行目に解像度などがクリップボードに送られるので
それを分岐処理に使いたいです。
623名無し~3.EXE:2008/04/12(土) 22:47:17 ID:bsDmcclx
クリップボードの解像度情報とかバッチファイル中でどうやって取得する気かと小一時間(ry
いやもしそういったツールがあるなら俺も是非欲しいが
624名無し~3.EXE:2008/04/12(土) 22:58:29 ID:L9AzdWZJ
クリップボードに解像度情報が入ってれば
cliputilなり何なりを経由してforででも
行解析すれば取得は可能じゃない?

真空波動研は使ってないからコマンドラインから
操作できるか知らないけど。
625617: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:2008/04/12(土) 23:53:40 ID:ma+dusF0
面倒くせーからクリップボードの内容をテキストに出力して
そこから必要行を抜き出して分岐判断させれ
627617: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:2008/04/13(日) 00:42:52 ID:2Fn25r/4
for /?
find /?
findstr /?
if /?
set /?

辺りかな?
629617: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:2008/04/13(日) 10:21:35 ID:q3/8LHKx
typeでテキストを表示したアドレスをlynxにぶち込むにはどういう方法がありますか?
631617:2008/04/13(日) 18:25:52 ID:pAruhQL3
もうあきらめてPerlで処理しました。
perlに頼ると負けた気分になるけど
今日中には終わらせたかったので。
632名無し~3.EXE:2008/04/13(日) 19:43:28 ID:QXIVF9vj
そういえば標準で数値計算に浮動小数点数使えるコマンドってあったっけ
633名無し~3.EXE:2008/04/13(日) 20:40:16 ID:U2MS+S2g
>>631
つか、バッチでどうしてもやらざるを得ない理由がなければ、
Perlのほうが断然便利だよ。

バッチは、OSのVersionによって解釈の意味が変わったり、
コマンド直打ちとバッチ内で記述する書式が違っていたりと、
とにかくクセがありすぎる。

パズルを組み立てて楽しむ程度の心の余裕がないとムリ。
即効性と実用度で言えばPerlが断然勝利。

さいごに、参考にPerlで解決した方法を書いてもらえれば、
スレ的に有益になるだろう。
634名無し~3.EXE: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)だけでも
どなたかお願いします
635631:2008/04/14(月) 01:48:28 ID:OkNafE+v
>>633
じゃぁ解決した方法だけをば
バッチ処理でfileリストと真空波動研の結果リストをファイルに保存
perlに処理を移して626さんのとおりの処理をさせて
エンコバッチファイルをperlに書き出させてそれをcall
以上です。
636名無し~3.EXE:2008/04/22(火) 11:20:21 ID:/OOwZtgR
コマンドラインから、net use コマンドを使うことなく(ドライブ文字を割り当てないで)
ファイルをコピーしたいのですが、可能でしょうか?

エクスプローラからの操作であれば、\\10. 1. 2. 30\ のように入力してUSER/PASSWORDを
入力すれば、ドライブレターを使うことなくファイルがコピーできますが、この操作がしたいのです。
637名無し~3.EXE:2008/04/22(火) 11:27:10 ID:Zu/QpkUZ
net use で必ずドライブに割り当てないといけないわけじゃないよ。

net use \\host\path PASSWORD /user:USERNAME
copy ほげほげ
net use \\host\path /delete

とか。
638636:2008/04/22(火) 11:46:48 ID:fvGqunE0
>>637
即レスありがとうございます。
ドライブ名無しで試してエラーが出たので、net use はダメかと思っていたのですが、
レス通りだとできました。自分で試した構文が間違っていたようです。ありがとうございました!
639名無し~3.EXE:2008/04/23(水) 14:50:16 ID:P+H+JVhc
Ctrl+Cキーで中断したバッチ処理を再開するにはどうしたらいいのでしょうか?
また、中断されている処理があるかどうか確認する事は出来ますか?

よろしくお願いします。
640名無し~3.EXE:2008/04/23(水) 15:11:36 ID:aJ9ihgZR
バッチ ジョブを終了しますか (Y/N)?
641名無し~3.EXE:2008/04/23(水) 23:38:12 ID:wxDe1tZY
Y
642名無し~3.EXE:2008/04/24(木) 01:46:00 ID:PjPeKbCJ
YES! YES! YES!
643名無し~3.EXE:2008/04/24(木) 02:25:29 ID:/KwaoZJn
How many files (0-15) ?
644639:2008/04/24(木) 08:29:44 ID:OFIsBZW/
>>640-642
ありがとうございます。 教えて頂いた通りに「Y」を押すことで無事終了することが出来ました !

いあ…すみません 中断してたのはバッチじゃなかったです…
もう少し調べてくるっス
645名無し~3.EXE:2008/04/24(木) 20:31:24 ID:s1mKrdXj
ちょ
646名無し~3.EXE: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:2008/04/26(土) 09:16:13 ID:+HXIEmBQ
32 ビットで表記される数値とは、-2,147,483,648 から +2,147,483,647 までの値の符号付き整数を表します。
648名無し~3.EXE:2008/04/26(土) 10:13:23 ID:noTmo+SZ
>>646
for ... ( ... )
って書き方は有効なのかな?
649名無し~3.EXE:2008/04/26(土) 10:30:49 ID:noTmo+SZ
ああ、ごめんなさい、偉そうな書き方したけど間違った理解をしてました。
( ) のブロック内での変数の扱われ方ですね。
if 1==1 (
 set xxx=hoge
 echo %xxx%
)
のようなとき、%xxx%はブロックに入る前の値しか参照できないようですね。

で646をよくみたら… ほんとにそれ動いたのって感じですね…
650名無し~3.EXE:2008/04/26(土) 10:50:19 ID:+HXIEmBQ
>>648-649
何いってんだ? cmd /? からやり直せ。
651名無し~3.EXE:2008/04/26(土) 11:05:58 ID:noTmo+SZ
>>650
すんません、理解しました。。。
set hoge=aaa && echo %hoge%
みたいなのが思った通りに動いてくれなかったのもこれなんだなぁ
652646:2008/04/26(土) 12:00:02 ID:dIylg/Sf
>>647
どうも。直し方が分からないし変な横槍入ってめんどくさいので割り算は諦めて
バイト値の下6桁を削って簡易表示でやることにしました
約!NN:~0,-7!MB
でわみなさんgood-by
653名無し~3.EXE:2008/04/27(日) 01:37:19 ID:xz87xW1t
if文の中にechoを入れたいのですが、そのecho文中に () があるとそれをifの
グループ化機能と誤認して構文エラーになってしまいます。
echo文全体を () や '' で括ったり、( と ) の前にそれぞれ^を加えてもダメでした。
何か手はありませんか?
654名無し~3.EXE:2008/04/27(日) 09:29:55 ID:Svy4QoHk
>>653
括弧の前に ^ をおいてエスケープ
655名無し~3.EXE:2008/04/27(日) 10:00:16 ID:0TiqPju+
シングルで囲むとどーなるか
656名無し~3.EXE:2008/04/27(日) 11:09:18 ID:eQlwkWfL
>>655
自分で試せよ。
657名無し~3.EXE:2008/04/27(日) 16:34:30 ID:xz87xW1t
>>654
ありがとうございます、( ) がechoの文中で完結してる場合は必要ないけれども
複数のコマンドにまたがるようにして ( ) が使われてる場合 ^ が必要みたいですね。
ところでif文中のechoは表示できる文字数に制限があるみたいで(半角英数120文字程度?)
そのechoの内容をファイルにリダイレクトしようとしても途中までしか書き込めませんでした。
今回に限って言えば、if文からgotoで抜け出し、そっちにechoを書いて
リダイレクトする判断は結果としては正しかったようです ^ ^;
658名無し~3.EXE: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: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・・・ と展開されてしまい、構文エラーになってしまいます。
660659: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:2008/05/10(土) 00:51:01 ID:2oG4P/Du
perlが使えるなら、全部perlで処理したほうが効率的では?

バッチは、代替がない環境で仕方なく使うものだと俺は理解しているが
662659,660:2008/05/10(土) 01:02:51 ID:jOW3pjRB
>>661
ええ、実は目的の動作はPerlだけですでに出来上がってるんですが、ふとbatでやってみようと思って、
昨日一日かけて色々ググッてみたり、いくつかスクリプト書いたりしたんですが、
どうしても出来なくて、ヒジョーにクヤシイ!!って思った次第です。

で、こちらの達人方にご指導いただければと思いまして・・。
663名無し~3.EXE:2008/05/10(土) 01:21:23 ID:eXbatmiN
%*
goto :eof
664660:2008/05/10(土) 01:56:15 ID:jOW3pjRB
>>663
うおおお!!できました。
引数が100個あってもちゃんと渡せます。

感動しました。ありがとうございます。
665名無し~3.EXE:2008/05/16(金) 22:13:06 ID:k4qTlZ8j
フォルダの中を消すには、どうするとよいですか?
rd /s
だと、フォルダごと消える。
複数あるのでバッチ処理したいが、何かよい方法は無いですか?
666名無し~3.EXE:2008/05/16(金) 22:19:39 ID:V84Krwca
rd /s フォルダ\*

でどですか
667名無し~3.EXE:2008/05/17(土) 07:37:18 ID:Tfmv5vbb
rd /s /q フォルダ
md フォルダ

まぁタイムスタンプが変わってしまうけどな
668名無し~3.EXE:2008/05/17(土) 17:15:03 ID:948oFaXd
cd フォルダ
rd /s .
669名無し~3.EXE:2008/05/17(土) 23:39:45 ID:PBIKhabT
バッチファイルでプログラムに00 01 02 03 ・・・といった連番になっている引数をわたしたい。
普通にfor文でやると頭に0がつかないので複数のfor文を組み合わせて実行しています。
ただ桁数が増えるとforと変数が多くなってわかりにくくなってしまします。
もうすこしいい方法はないでしょうか?
670名無し~3.EXE:2008/05/18(日) 00:15:50 ID:9CUWfmLK
for /l
671名無し~3.EXE: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:2008/05/18(日) 00:45:56 ID:Ox8jPhTX
temp はまずかった
673名無し~3.EXE: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:2008/05/18(日) 01:43:47 ID:FcpR8lz9
>>671
ありがとうございます。できました。
setと環境変数の勉強がたりなかったようなので勉強しなおそうと思います。
675名無し~3.EXE: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:2008/05/18(日) 10:55:34 ID:paRoTs6C
%1 を %~1 にするとかじゃね?
どうでもいいけど、コマンドの大文字小文字は
統一したほうがいいよ
677名無し~3.EXE:2008/05/18(日) 13:43:59 ID:sec9T0KN
>>675
for %%1 IN (%*) DO コマンド処理 %%1
678名無し~3.EXE:2008/05/18(日) 14:16:17 ID:L+mLCnGS
shift したら %1 は無くなるだろ。
679名無し~3.EXE:2008/05/18(日) 15:04:01 ID:ku4xMzVb
>>676
質問者じゃないけど、この2つの違いって何ですか?
680675:2008/05/18(日) 19:43:39 ID:TvxyqS1+

>>677 の方法で処理できました。

if を大文字にしていたのは 試行錯誤の残骸で
shift の位置は確かに適切ではないですね

ありがとうございました >> all
681名無し~3.EXE: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: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: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:2008/05/22(木) 22:06:39 ID:Vl7E04+C
スンマソン
バッチでIPアドレスの設定は可能でしょうか?
あとディスク使用量を出すコマンドはあるでしょうか?
よろしくです
685名無し~3.EXE: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:2008/05/23(金) 10:07:11 ID:ZLhGN8vH
fsutil volume diskfree c:
空きとドライブの全容量が出るからそこから逆算すれば。
687名無し~3.EXE: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:2008/05/25(日) 14:59:19 ID:QPVRGIlk
>>688
日付をつけるとややこしくなりそうだし、どうせ消すのなら

backup_mon.bat
copy xxxx.mdb backup_mon.mdb

みたいなのを1週間分つくって、
タスクマネージャで起動かけるとかじゃだめ?

これだと古いのは勝手に消えるし。

690689:2008/05/25(日) 15:03:40 ID:QPVRGIlk
× タスクマネージャ
○ タスクスケジューラ

orz
691名無し~3.EXE: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:2008/05/25(日) 16:21:12 ID:zbkosXn7
一般的な方法じゃないけど、
各行の後ろの何文字かを取り出して、
,をスペースに変換して、
一番最後のワードを結果とするのはどうですかね。
693名無し~3.EXE: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:2008/05/25(日) 18:42:07 ID:wEJGvu77
>>693
出来ました<(_ _)>
695名無し~3.EXE:2008/05/26(月) 12:03:03 ID:2uqHEmAT
今更Windows2000なのですが、画面の解像度とかカラーモードをバッチで設定することは可能ですか?
696名無し~3.EXE:2008/05/26(月) 13:45:51 ID:SfOkgupv
コマンド1個だけじゃ無理だろうね。

いろいろ手順を踏めばできないこともないが、
適当な外部ツールを起動させるだけのバッチを作ったほうが手間的に得
697名無し~3.EXE:2008/05/26(月) 13:56:06 ID:NdJLY4Hf
698695:2008/05/26(月) 14:11:14 ID:2uqHEmAT
即答ありがとうございます。>>697のツールを試してみることにします。
699名無し~3.EXE: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: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:2008/05/27(火) 22:24:26 ID:24yESl2I
702名無し~3.EXE:2008/05/27(火) 22:43:51 ID:/w3vmy7X
エスケープは ^ でしたっけ。しかしそうすると今度は

>perl -e "print join',',@ARGV" "s/'/^"/g" | more
s/'/^/g | more

| more までが全て1つの引数として扱われてしまいました。
703名無し~3.EXE:2008/05/27(火) 22:48:28 ID:hncFSdKH
括弧は?
704名無し~3.EXE:2008/05/28(水) 11:01:30 ID:ae35Ovs8
cmdを起動する時に、詳細設定の環境変数を弄らずに
path %path%;c:\bin やdoskey等を打ち込んだ状態にしたいのですが、どうすればできますか?
705名無し~3.EXE:2008/05/28(水) 13:49:11 ID:PlLgl/L0
cmd起動用のバッチでも書け
706名無し~3.EXE:2008/05/28(水) 14:16:28 ID:lcT2TWdz
cmd /k "path %path%;c:\bin & doskey"
707名無し~3.EXE:2008/05/28(水) 14:23:02 ID:lcT2TWdz
\042
\x22
708名無し~3.EXE:2008/05/28(水) 14:47:27 ID:ae35Ovs8
>>706
ありがとうございます
709名無し~3.EXE: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:2008/05/28(水) 22:20:25 ID:wRMFx7lg
バイナリファイルの先頭1MBだけコピーしたいのですが、
この用途に適したコマンドまたはツールはないでしょうか。

ファイルのハッシュを計算する際、フルにスキャンすると時間がかかるので、
個体認識さえできればよい、という前提で探していますが、
CUIツールは見つからず、ヘルプいただけると助かります。
711名無し~3.EXE: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:2008/05/29(木) 11:03:38 ID:kmN2kcgk
>>710
dd でいいんじゃないかな
http://genluck.blog78.fc2.com/blog-entry-2.html
cygwinとかgnuwin32とかにもあると思う。
714名無し~3.EXE:2008/05/29(木) 13:15:02 ID:vznSjYc6
>>712
schtasksのエラーのメッセージは標準エラー出力に出るんじゃね?
schtasks 〜 >> %LOGFILE% 2>&1
715名無し~3.EXE:2008/05/29(木) 21:38:50 ID:wqEdMWdF
>>713
ありがとうございます。おかげさまで、かなり高速で処理できました。
まさかWindows環境で、あの便利なDDが使えるとは・・・

/of にHDDのデバイス名を割り当てたら死んでしまうので、
バッチで作る際は、その点だけ要注意ですね。
716名無し~3.EXE:2008/05/30(金) 20:58:00 ID:fOxd9QQm
>711
う〜ん、バッチファイルの話では無いのでこちらで聞いていたのですが

…とりあえず、色々考えてみます。ありがとうございました。
717名無し~3.EXE:2008/05/30(金) 22:34:33 ID:9ky/2+Nz
それより正規表現で>>707の意味を調べろよ
718名無し~3.EXE: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:2008/05/31(土) 12:55:23 ID:LVZHNqTn
引数に空白とタブルクォートが両方入るならどうなる?
720名無し~3.EXE: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: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: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: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:2008/06/01(日) 22:21:54 ID:Sj5PJvNr
すんません
すごい低俗な質問なんですが

ren(rename)がうまくいきませぬ

たとえばデスクトップにあるテストって名前のフォルダの名称を変更する場合

C:\Documents and Settings\****\デスクトップ>ren テスト テスト1

こういうやり方をしてうまくいかないのは
やっぱりがおかしいんでしょうか○....rz

727名無し~3.EXE:2008/06/01(日) 22:29:59 ID:Sj5PJvNr
いえきっと

やっぱり頭がおかしいんだといいたかった・・・(´・ω・`)
728名無し~3.EXE:2008/06/01(日) 23:30:35 ID:qvFoSpKB
>>726
普通にできるが?

「テスト」内のファイルを使用中にリネームしようとしてるんじゃないの?
729名無し~3.EXE:2008/06/01(日) 23:40:24 ID:Sj5PJvNr
>>728
いえ開いてなんていないですが・・
これであってるんですか

同見ても無反応・・・
730名無し~3.EXE:2008/06/01(日) 23:41:55 ID:Sj5PJvNr
すません途中送信してしまたorz

>>728
いえ開いてなんていないですが・・
これであってるんですか

同見ても無反応・・・

で、renってファイルがデスクトップに作成されちまいやす
731名無し~3.EXE: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:2008/06/02(月) 00:06:34 ID:Sj5PJvNr
>>731

cd<C:\Documents and Settings\Akihiko\デスクトップ
ren テスト テスト1

こういうことでしたか無知ですいません
ググりまくったんですが
どこ見てもコマンドの説明とかあるんですが構成とかまったくなくて○..rz

ばかですいまそん

ほんとはファイルの名前だけ入れ替えとかやりたかったんですが
これだけのことにこんな手間取るなんて・・・

諦めて半年くらいROMってきます
ありがとうorz
734733:2008/06/02(月) 00:08:33 ID:Cid0TIPt
>>732
ouch!

レスがついてる!
親切にありがとう

一番大事なとこが抜けてたんですね
バッチファイルが作りたかったんですorz

ほんと素人すぎてすいまでした
735名無し~3.EXE:2008/06/02(月) 00:14:22 ID:Cid0TIPt
すいまでした→すいませんでした

頭がパンクしました○rz
736名無し~3.EXE:2008/06/02(月) 00:30:58 ID:1WXTzPCh
ちったあ推敲してから書き込め
737名無し~3.EXE:2008/06/02(月) 13:54:20 ID:3tN2UbSe
睡魔だったんだろ?解るよ。
738名無し~3.EXE:2008/06/02(月) 17:53:55 ID:/+k/rMka BE:666238638-2BP(802)
オリンピックも近い事ですしね…
739名無し~3.EXE:2008/06/03(火) 18:08:38 ID:7j2Uu5Ce
740名無し~3.EXE: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:2008/06/04(水) 15:16:49 ID:MFKCUv/N
モレはふつーに、100行あったら、25行づつ4枚のBATファイル書いてるけど。
特に問題無いよ。
742名無し~3.EXE:2008/06/04(水) 15:26:33 ID:E/mtZnYt
オレも今まではそうだったんだけど、もっと賢くできないかなぁ?とか思ったけど
オレに出来る範囲だとomp使ってexe作る位しか思いつかなかったから、試しに聞いてみた

どうぞよろしく〜
743名無し~3.EXE:2008/06/04(水) 15:30:47 ID:znlAZcWV
WSHでExec使えばえーがな
744名無し~3.EXE:2008/06/04(水) 15:41:12 ID:E/mtZnYt
>>743
正規表現がどうかしたの?とかおもったけどww
調べてみたら割と簡単に出来そうで助かりました
ありがとうございましたノシ
745名無し~3.EXE:2008/06/04(水) 15:46:52 ID:E/mtZnYt
訂正
X ありがとうございましたノシ
O ありがとうございましたm(_ _)m
746名無し~3.EXE: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:2008/06/04(水) 17:57:35 ID:B4CJCE84
んなアホな。それだったら
「質問された事をコマンドライン以外でやろうとしたらどうなるか?」スレになってしまう

ここは「それでも時代遅れのコマンドラインでなんとかやろうとしたらどうなるか?」と追求したり、それを質問をするスレだわ
コマンドラインが時代遅れである事は聞いてる人の側でもむしろ前提
746方式だと、これから誰かが何か聞いてくるたびに、質問されても無い別のスクリプトを教えるつもりなのか?
お勉強発表会は否定しないがその該当スレでやるか?ソフ板の総合質問系のスレでやるヨロシ
748名無し~3.EXE: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:2008/06/04(水) 22:09:00 ID:iEWLl5O8
751名無し~3.EXE:2008/06/05(木) 09:36:57 ID:lU41qR+3
>>750
ありがとうございました
いろいろぐぐったんですがいい方法も見つからなかったので
スペースは手作業で消すことにします
752名無し~3.EXE: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:2008/06/05(木) 10:27:50 ID:lU41qR+3
>>752
あーなるほど
分離してしまうならつなげろってことですか
気付きませんでしたorz
ありがとうございました
754名無し~3.EXE: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:2008/06/05(木) 22:03:49 ID:pkF1J8Bp
毎日、画像を三十枚以上、縮小&リネームしています。
手作業はしんどいので、自動化しようと思いここにたどり着きました。
リネームはDOSプロンプトで出来ることが分かりました。
画像はWindows標準のPaintで縮小していましたが、DOSで同様の処理が出来ますでしょうか?
ただし、他のソフトをインストールできない環境です。標準のソフトとofficeしか入っていません。
756名無し~3.EXE:2008/06/05(木) 23:52:02 ID:BS+WRxse
>>755
imagemagick使う。

インストールできないというのが実行ファイルを外部から持ってくるのも不可という場合は不可能と言うべきか?

厳密には不可能じゃないけど…
757名無し~3.EXE: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]:アクセスが拒否されました。"となってしまいます。
    対象を*にするとローカルには表示されます。
758755:2008/06/06(金) 05:15:08 ID:eZBPSYq8
>>756
imagemagickは外部から持ってくることになるため、避けたいです。
厳密には不可能でないという方法をアドバイス頂けないでしょうか?
759名無し~3.EXE: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:2008/06/07(土) 13:40:11 ID:Ep8IequY
>dirの出力をファイルに落として
for /f使え
詳しくはfor/?

>空き容量文字列の抽出は
findかfindstr使え
詳しくはfind/?かfindstr/?
764762:2008/06/07(土) 14:41:58 ID:9kLf9UVX
>>763
レスありがとうございます。
制御変数へのセット(IF文での判定)はどうすれば良いのでしょうか?
ここが一番悩みなんですが・・・

765名無し~3.EXE:2008/06/07(土) 14:50:39 ID:6Y503noJ
あるプログラムを互換モードで動作させる場合、エクスプローラからそのプログラムを
右クリックして、プロパティから互換性タブを開いて設定すると思います。

この作業をコマンドラインから行いたいのですが、どなたか方法をご存知ありませんか。
766名無し~3.EXE:2008/06/07(土) 16:51:57 ID:Ep8IequY
>制御変数へのセット(IF文での判定)はどうすれば良いのでしょうか?
for /f使え
詳しくはfor/?
767名無し~3.EXE:2008/06/07(土) 18:08:56 ID:616T7vii
>>766
部外者だが、知ってるなら具体的に**オプション使えばできる、とか書いてよ。
そんなオウム返しみたいなレス、スレが汚れるだけだからいらんよ
768名無し~3.EXE:2008/06/07(土) 18:22:09 ID:EguiI6zR
答え: /f
769762:2008/06/07(土) 21:23:09 ID:9kLf9UVX
>>766、767、768
レスありがとうございます。
for /fしか、ないということですね。
770名無し~3.EXE:2008/06/07(土) 22:56:00 ID:Ep8IequY
サンプルコード欲しければ、
http://pc11.2ch.net/test/read.cgi/win/1176558776/
で^Fしてfor /fを検索すればいくらでも見つかるよ
771762:2008/06/08(日) 11:22:44 ID:1NIPO+wf
for /fは分かったのですが、数値比較がうまくいきません。
if文で、数字が小さいと正しく比較されますが、
数字が大きくなると正しく比較されません。

例えば 1000 leq 800は、偽ですが、
100000000000 leq 80000000000は、真になります。
どうすれば良いのでしょうか?
772名無し~3.EXE:2008/06/08(日) 11:26:09 ID:yG6GqC1B
桁削れ
set /?
773762:2008/06/08(日) 14:02:03 ID:1NIPO+wf
>>772
レスありがとうございます。
なんとか出来ましたm(_ _)m
774名無し~3.EXE: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:2008/06/08(日) 23:25:48 ID:xSF5tFgW
置換出来てるようには見えないがww
774がaの値がb=cとか錯覚しやすい変な例を上げてるせいだが
set a==

echo %a:==置%
echo %a:^==置%
どのやりかたでもダメだったと言いたいのだと思う

答えはシラネw
777名無し~3.EXE:2008/06/09(月) 01:25:45 ID:ChRGygE7
>>755
画像をUSBメモリで持ち帰ってフォトショップのマクロでやる
exeの持ち込みはダメなのにbatはいいってのがよくわからん管理状況だな
せめてOfficeとか入ってないの?VBA使えばそれこそなんでもできるよ
778名無し~3.EXE:2008/06/09(月) 01:29:52 ID:2VVefUuT
>>777
よく嫁
> 標準のソフトとofficeしか入っていません。
779名無し~3.EXE: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:2008/06/13(金) 11:21:22 ID:z034p4t+
ログオン時起動するように設定した方法とechoメッセージまでのバッチの内容は?
782780:2008/06/13(金) 19:38:13 ID:jt91+Q1n
>>781
レスありがとうございます。

設定等は以下の通りです。よろしくお願いします。


1.タスクスケジューラの

[全般]→[ユーザがログオンしているかどうかにかかわらず実行する]
    をチェック
[トリガ]→[タスクの開始]を[ログオン時]
    →[特定のユーザ/グループ]をチェック
[操作]→[プログラムの開始]
    バッチファイルのパス名、ファイル名指定

2.バッチファイルの内容は

@echo off
echo テスト
  :

です。

あと、関係があるかどうか分かりませんが、
[コントロールパネル]の[タスクのスケジュール]の盾マークがついてます。
783名無し~3.EXE:2008/06/13(金) 21:55:16 ID:eSs07QtP
一瞬で終わってるから気づかないだけとかいうオチはないよね
784名無し~3.EXE:2008/06/14(土) 14:16:39 ID:2LQf8VmF
MB温度、CPU温度、HDD温度をコマンドラインで取得したいです。
Wmic.exeというのが使えそうなのですが、使い方がいまいち分かりません。
わかるから、教えてください。
785780:2008/06/14(土) 17:07:22 ID:pWOjAg5F
>>783
レスありがとうございます。

「echo テスト」の次をpauseにしてますので、
気づかないうちに終わったということはありません。
786名無し~3.EXE:2008/06/14(土) 19:12:47 ID:gykffnVR
>>785
そもそもログイン前に実行したコマンドラインの内容って
ログイン後に表示されるの?

出かけてるから試せないけど、ファイルつくるようなバッチだったら
どんな動きしてる?
787786:2008/06/14(土) 19:15:56 ID:HScNwkhv
ログイン前、じゃなくってデスクトップ表示前、ですねorz
788名無し~3.EXE:2008/06/14(土) 20:43:48 ID:ZCY+j6Iz
うごいてるのか、
うごいてないのか。
うごいてるのに目に見えないだけなのか。
問題の切り分けをしろ。

ECHO %DATE% %TIME% うんこヤロー>>UNKO.log
789名無し~3.EXE:2008/06/14(土) 22:05:03 ID:HQrnnlE5
>>780
>「起動中」になっていますが、

の原因は

>「echo テスト」の次をpauseにしてますので、
790780:2008/06/15(日) 16:48:01 ID:HulyKHru
レスありがとうございます。

ECHO %DATE% %TIME% うんこヤロー >>…を
echo テストの前に入れてみましたが、
ファイルには何も書かれていません。

要求時に実行をチェックして、[操作]→[実行]すると、
タスクスケジューラの状態は実行中に変わりますが、
やはり、ファイルには何も書かれていません。

よろしくお願いします。




791名無し~3.EXE:2008/06/15(日) 17:48:49 ID:Wz6x2KJY
>>790
そもそも、そのバッチをコマンドラインで実行したら、どうなる?
792名無し~3.EXE:2008/06/15(日) 19:23:45 ID:JgbyKUVJ
「ファイルには何も書かれていません」ってのが本当かどうか怪しいな。
出力先に、ちゃんと絶対パスとドライブ名は入れてる?

書けないと言っておきながら、tempディレクトリとかに
しっかり書き込まれて、気づかない事例はよくある
793790:2008/06/16(月) 16:12:54 ID:jtToNX4P
>>791,792
レスありがとうございます。

コマンドラインで実行しても、バッチファイルをダブルクリックしても
正しく実行されます(ファイルに日付等が出力され、次のechoコマンドの
メッセージが表示され、「続行するには何かキーを押してください・・・」
が表示されます(pause))。

echo、pauseコマンドが処理されているのにメッセージ表示等が
正しく行われていないのか、そもそも処理されていないのかを
切り分けるためにファイル出力コマンドを入れています。

ファイルに書き込まれていることに気付かないだけで、
ファイル出力コマンドの処理が正常に行われていて、
次の「echo テスト」「pause」コマンドが正しく処理されない
というのは考えにくいのではないでしょうか。

ちなみに、タスクスケジューラでのバッチファイルのパス指定は
次のようになっていますが、問題はないでしょうか

C:Users\アカウント名\バッチファイル名



794名無し~3.EXE:2008/06/16(月) 16:41:46 ID:qoH3tLVW
なんで相対パス……
795名無し~3.EXE:2008/06/16(月) 21:06:26 ID:TXDKiHGf
どこが相対パス?
796名無し~3.EXE:2008/06/16(月) 21:15:01 ID:dK6gjggp
>>793
Vistaで実行してるようですけど
リダイレクト先はどこにしてますか?

権限をどう設定してるか分からないけど
C:\Users以下はUACの影響を受けたはずなので
その位置に書かれるか保証できないかも

Dドライブあたりにディレクトリ切ってみて
そこで試してみたらどんな結果になります?
797796: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:2008/06/17(火) 02:07:19 ID:zYoM/dJA
相対パス
799790:2008/06/17(火) 13:58:01 ID:zwWahSzn
>>797
レスありがとうございます。

ファイルが作成されない原因は分かりました。
ところで、本来やりたい「デスクトップへechoメッセージを
表示してpauseで待つ」という処理が、
ログイン時タスクで出来ないとすると、どうすれば良いのでしょうか?
ログイン直後に自動起動してデスクトップへメッセージを表示して
キー入力を待つという処理はコマンドラインではできないのでしょうか?


800名無し~3.EXE:2008/06/17(火) 14:26:27 ID:xgz+vgOu
普通にスタートアップに登録すればいいんじゃね?
801名無し~3.EXE:2008/06/17(火) 16:35:18 ID:zYoM/dJA
>ファイルが作成されない原因は分かりました。
802名無し~3.EXE: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:2008/06/18(水) 04:30:39 ID:Xiqhpdl5
> ファイルが作成されない原因は分かりました。

原因を説明せーよ。

> ログイン時タスクで出来ないとすると、どうすれば良いのでしょうか?

スタートアップ入れればいいじゃん。
804名無し~3.EXE:2008/06/18(水) 10:13:29 ID:NUy0S7AO
コマンド補完で、bashやnyacusのように候補一覧を並べるのではなく、
zshのように候補を次々に表示していくシェルがあれば教えて下さい。

こんな感じでできればいいなと思う例
環境変数path内に、「testcommand01.exe」、「testcommand02.exe」がある場合
testと打ち込み TABを1回打つと、testcommand01.exeが表示され、
もう一度TABを打つとtestcommand02.exeが表示されるような感じ。
805804:2008/06/18(水) 10:19:18 ID:NUy0S7AO
すみません、よーく確認したらnyacusで、ほぼ同様の事ができるのでnyacus使わせてもらいます。
806790:2008/06/18(水) 19:57:52 ID:kUYKhkJk
>>803
レスありがとうございます。

表現が不適切でした。原因は理解できていません。
C:\Users\アカウント名の直下にバッチファイル等を置くと
ファイルに出力されないが、D:\等のドライブ名の直下に置くと
ファイルが出力される事が分かったという事です。

あと、スタートアップ時でも、現象は同じで、
echoメッセージはデスクトップには出力されません。

ログイン時に表示されないのは、OSの不具合なんでしょうか?
(ログイン後ダブルクリックで起動したら、表示されますので)
807名無し~3.EXE:2008/06/18(水) 21:26:17 ID:kMRIsu4a
>>793 の相対パスは絶対パスに直したのかよ?
808名無し~3.EXE:2008/06/18(水) 21:28:03 ID:xcv3f3Vr
>>806
まずは切り分けしてみては?

スタートアップでもダメらしいですが
遅延時間を設定してデスクトップ表示後に
実行してみたり、時間指定で動かすと
どんな挙動かを観てみてはどうでしょう

809名無し~3.EXE: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行まで)
別ファイルにリダイレクトするって、コマンドプロンプトで
出来ますか?
811810: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:2008/06/19(木) 00:32:47 ID:yke/11qL
どこからか tee.exe をダウンロードして使うしか無いやろ。
814名無し~3.EXE:2008/06/19(木) 00:33:42 ID:yke/11qL
>>809
そのコピペ、おもしろい。名前を付けて保存・・・っと。
815名無し~3.EXE:2008/06/19(木) 00:51:15 ID:o/4A0OYu
>>813
つまり、デフォルトでは無理ということですか
816名無し~3.EXE: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なので使えないみたいでした。。。

その他のフィルタリングもできたらありがたいですが、できなければその後加工します。

ヒントだけでもかまいませんので よろしくお願いいたします。
818802:2008/06/19(木) 08:08:58 ID:+4JJC5K4
判りました。1-9と10以上で条件わけすればよいのは判っていたのですが、
なぜかうまく反映されなかったのが書き直したらうまくいきました。
お騒がせしました。
819名無し~3.EXE:2008/06/19(木) 10:44:22 ID:IU2H2q9l
>>810
前スレ833あたりでしてたよ。NT4に対応しているかは微妙。
あと、head.exeとtail.exeを持ってくれば楽にできる。
820名無し~3.EXE:2008/06/20(金) 02:14:08 ID:Tro/Oyn2
>>816
それじゃだめだろ
>画面出力しつつ
821名無し~3.EXE:2008/06/20(金) 13:43:58 ID:Tro/Oyn2
powershellのstart-transcriptはどうだろ?
822名無し~3.EXE:2008/06/20(金) 21:44:21 ID:NAkOQzpa
>820
出来るはずなんだが…。
>816は標準出力と、引数に指定したファイルに書き出すコードだぞ?
標準出力をリダイレクトしたら表示されないかも知れんが…。
823名無し~3.EXE:2008/06/21(土) 01:32:25 ID:LKJW76Gj
>しつつ
824名無し~3.EXE:2008/06/21(土) 14:52:10 ID:k6N4oqjE
>>822
816って
dir *.* | tee.bat log.txt
みたいな使い方するもんだよね?

ちゃんと継続的に画面出力をログに出力してくれてるが…

進行度みたいな同じ行で更新されるタイプの出力を画面表示と同じように出力できるものってないかな。
これはtee.exeでも同じなんだけど、
1%
2%
3%

100%
みたいに更新される毎に改行されてしまうんだな。
825名無し~3.EXE:2008/06/21(土) 16:03:44 ID:zfiUXgMk
hoge | tee.bat log.txt

hogeが終了するまで画面に出て来ないだろ?
826名無し~3.EXE:2008/06/21(土) 17:16:28 ID:gMbL69mY
>>824
title使えばいいじゃん
827824:2008/06/21(土) 18:23:16 ID:k6N4oqjE
ごめん勘違い。>>816の奴ダメだわ。

今までtee.exeを使ってた場所を816ので書き換えてやってみたつもりだったんだが
ちゃんと書き換わってなかった。tee.exeの動作を816の奴の動作と勘違いしていた。
書き換えたらダメだった。使えん。

>>826
進行度を出力してるのは自分が作ったバッチじゃなくて別の実行ファイルなんだ。
だからタイトルに進行度を表示するってわけにはいかない。

コマンドライン型のアンチウィルスとか、アーカイバのログを取ろうとしてるんだ。
今は一旦冗長なログを出力してからいらないところを削除したりしてる。
828名無し~3.EXE:2008/06/21(土) 19:53:34 ID:zfiUXgMk
readallやめてread(1)でぐるぐる回せ
829名無し~3.EXE:2008/06/23(月) 13:15:13 ID:0z5/ZZHn
ああ「しつつ」なのか。
ちょっと書き換えれば可能だが…やってみようかな。
830名無し~3.EXE: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:2008/06/23(月) 14:31:26 ID:rv6IXUVV
俺みたいなバッチしかやったことのない無能人間には、
wshの行間で何をやってるかわからないので、解説頼む
832名無し~3.EXE:2008/06/23(月) 14:47:47 ID:0z5/ZZHn
ID:zfiUXgMk の指摘を元に >816 を改造しただけだよ
833名無し~3.EXE: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:2008/06/23(月) 21:04:03 ID:wbGXdlDD
転載

条件付き処理記号を使うと、同じプロンプトから複数のコマンドを実行して、コマンドの実行結果に基づいてコマンドを実行できます。

アンパサンド (&) は、単一のコマンド ライン上で複数のコマンドを区切ります。
かっこは、複数のコマンドをグループ化します。
セミコロン ( ; ) またはカンマ ( , ) は、コマンド パラメータを区切ります。
キャレット (^) を使うと、コマンド記号をテキストとして使用できます (その記号の特殊な意味は無視されます)。
二重のアンパサンド (&&) を使うと、この記号の後に続くコマンドは、記号の前のコマンドが成功した場合にだけ実行されます。
二重のパイプ (||) を使うと、この記号の後に続くコマンドは、記号の前のコマンドが失敗した場合にだけ実行されます。
835名無し~3.EXE:2008/06/23(月) 21:33:01 ID:EzLG1D0g
ありがと 惚れたました
836名無し~3.EXE:2008/06/23(月) 21:36:29 ID:FTwpBN7+
>>830
素朴な疑問なんだけど、
Arrayクラスが元からもってるshiftメソッドをわざわざ定義しなおしたり、
せっかくEnumerator作ってるのにいったん配列に入れなおしたりしてるの
は何故?
837名無し~3.EXE:2008/06/23(月) 21:39:41 ID:EzLG1D0g
あと○秒後に、○○コマンドを実行するっていうのはできるんですかね?
shutdown -t 10
とかは使えるのはわかるんですが
例えば、cd \を10秒後に行うとかってできるんですかね?
838名無し~3.EXE:2008/06/23(月) 21:47:03 ID:ZzemjZm6
>>834
こいつは便利だ、横からサンクス
839名無し~3.EXE:2008/06/23(月) 22:19:13 ID:rv6IXUVV
>>837
pingを自分宛に10回叩く
840名無し~3.EXE:2008/06/23(月) 22:20:49 ID:EzLG1D0g
>>839
やっぱりディレイコマンドっていうのはないんですね・・
841名無し~3.EXE:2008/06/23(月) 23:51:37 ID:F/aJ8ivT
>>836
そっとしといてやれよ。
842名無し~3.EXE:2008/06/23(月) 23:53:35 ID:iWmWdG24
>837
clock.aviを再生して終わるのを待つ
843名無し~3.EXE: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:2008/06/24(火) 03:10:57 ID:SZVTbtHo
日本語大丈夫ですか?
845名無し~3.EXE:2008/06/24(火) 03:38:54 ID:pW0iI2Ae
めんどくさいから主語と助詞を抜いてるのもわからないのか
行間補完しろアホ

こんな糞スレにキチガイ粘着がいるとは思わなかった
今後このスレでは二度と教えないから
Sleep.exeはrktools.exeでタダで配布されている。microsoft公式サイトで
846名無し~3.EXE:2008/06/24(火) 03:45:54 ID:pW0iI2Ae
ていうかSleep.exe rktools.exe マイクロソフト公式

必要なキーワードはすべて網羅されてるからそれでわからなかったら人辞めろ
わかってるのに揚げ足取りやってるなら、クズ人間
847名無し~3.EXE:2008/06/24(火) 04:00:37 ID:dCCpwkqH
スレ住民 -1 
848名無し~3.EXE:2008/06/24(火) 06:40:47 ID:rR1+Tu8K
>836
前者は古いバージョン用。今のバージョンなら要らん。
後者は単に俺が Enumerator 苦手なだけw 是非書き直してくれ
849名無し~3.EXE: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:2008/06/24(火) 14:06:46 ID:SZVTbtHo
>>845
このスレの住人ならsleep.exeなんてあえて指摘されるまでもないでしょう。

それより本当に大丈夫ですか?

頭。
851名無し~3.EXE: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:2008/06/24(火) 23:55:53 ID:pJKSc5OV
854名無し~3.EXE:2008/06/25(水) 01:08:25 ID:pX/hdHEz
>>852

help start でヘルプを読め
855名無し~3.EXE: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:2008/06/25(水) 12:14:25 ID:o+wlXfey
tasklistを回して終了を監視すればいい
857名無し~3.EXE:2008/06/25(水) 15:11:52 ID:Kh4xTa8p
それぐらいならwsh使うわ
858名無し~3.EXE: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: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:2008/06/25(水) 19:56:59 ID:/gx/69id
正直sleep.vbsじゃ
そのディレクトリ内にそのbatかvbsファイルないとできないじゃん
861名無し~3.EXE:2008/06/25(水) 19:58:40 ID:3V52NKTC
低負荷の音声ファイルを再生させるとかで1つ
862名無し~3.EXE:2008/06/25(水) 21:27:48 ID:Kh4xTa8p
ping.exe localhost -n 1
863名無し~3.EXE:2008/06/25(水) 22:34:08 ID:pX/hdHEz
>>860
頭は生きてるうちに使うもの。

echo WScript.Sleep WScript.Arguments(0)*1000>sleep.vbs
864名無し~3.EXE:2008/06/25(水) 22:44:15 ID:S0FVI1+e
>>863
感動した
865名無し~3.EXE: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:2008/06/26(木) 00:05:55 ID:bEvl4gH4
calc | notepad & echo 終わった
867名無し~3.EXE: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: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:2008/07/01(火) 01:23:41 ID:06PZ+BPo
すんません
コマンドの標準出力を変数にセットするにはどうすればいいですか?

ちなみに
aaaa
というプロセスがいるかを確認するために

tasklist | find "aaaaa"
の結果を変数にぶちこんで、その変数がNULLかどうかで判定しようと考えています。
870名無し~3.EXE: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: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:2008/07/01(火) 13:03:00 ID:NO9OOEqz
if errorlevel 1だろ?
873名無し~3.EXE:2008/07/02(水) 00:45:21 ID:3rsfgc1I
tasklist | find "aaaaa" && echo ぷげら!
874名無し~3.EXE: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:2008/07/02(水) 17:21:27 ID:OMuiQSzS
tasklistがないお
876名無し~3.EXE:2008/07/02(水) 21:09:37 ID:HUBiufFo
windows2000でnetshを使って、IPアドレス設定バッチを作ったんですが、
LANケーブルが抜けている状態だと正常に変更できません。

もろもろの事情でLANケーブルが抜けている状態でも変更できるように
したいのですが、どうすればよいでしょうか?
877名無し~3.EXE:2008/07/03(木) 06:48:55 ID:S7B7seB5
>>876

Windows で TCP/IP のメディア検出機能を無効にする方法
ttp://support.microsoft.com/kb/239924/ja

試してはいないんだが、多分このあたり
878名無し~3.EXE:2008/07/03(木) 08:48:56 ID:9ohMIDqz
>>875
実は俺もXPhomeだから長らくTasklist.exeが無かったがネットでもらって来た
http://www.computerhope.com/download/winxp.htm

マイクロソフトのどこかでも落とせるらしいがそのURLは知らない
(こう書けば誰かが貼るかな)
あそこのダウンロードサイトは迷路のようになっていて、ビルゲイツ会長でさえブチ切れさせる場所だから
なるべく近寄らないようにしている
http://www.technobahn.com/cgi-bin/news/read2?f=200806270311&page=2
879名無し~3.EXE:2008/07/03(木) 11:47:27 ID:KH9cTY/t
SPから抜けよ
880名無し~3.EXE:2008/07/03(木) 18:25:54 ID:m7fH+sfP
フォルダであるかどうかをどうやって調べますか。
881876:2008/07/03(木) 22:22:33 ID:JNY6wKZ3
>>877
試してみたところ変更できました。
できればレジストリをいじらずに変更できるようにしたいんですが、
可能でしょうか。(レジストリをいじることに抵抗があるもので・・・)

882名無し~3.EXE:2008/07/03(木) 22:48:45 ID:JG6UUf4I
>>880
NUL を使え。

IF EXIST C:\うんこ\NUL ECHO ちんこ
883sage:2008/07/03(木) 23:17:01 ID:EKdOSVCV
>>882
こんな技があるとは...
助かりました。あざす。
884877:2008/07/04(金) 06:21:02 ID:Egjxu5mx
>>881

MSがオフィシャルなサイトでレジストリをいじれと言ってるわけなんで、
他の手はないものと思われ。
もしGUIとかがあったとしても、いずれにせよ内部的にはレジストリの
同じエントリが変更されるんだろうし。
複数台で変更するのが面倒とか自分以外の人間にやらせるのが不安とかなら、
.regファイルを作るのが正解な気が。
885名無し~3.EXE:2008/07/05(土) 00:18:46 ID:XqKTTUMO
このスレとム板のバッチスレってどっちがレベル高いの?
886名無し~3.EXE:2008/07/05(土) 00:54:45 ID:EUfbIAK/
 |      ──/ __/_ \  __|__ヽヽ /
 |        ∠    /  \ \    |     / ̄ ̄/ ̄ ̄
 |          \   /   /     / | \      /
 \_/   α/     /          |       /
887名無し~3.EXE:2008/07/05(土) 01:05:41 ID:C3DX+t/z
こっちのほうが高い。というか住人がみんな冷静
888名無し~3.EXE:2008/07/05(土) 02:06:07 ID:KsoT05Ul
     / ̄\
    |     |  
     \_/
      |
   /  ̄  ̄ \    
  /  _ノ  ヽ、_  \
/ o゚|⌒|  |⌒|゚o  \   /    /   /  | _|_ ― // ̄7l l _|_
|   | (__人__). |    | _/|  _/|    /   |  |  ― / \/    |  ―――
\  | `|⌒|´ |  /    |    |  /    |   丿 _/  /     丿
/ ̄ |川!| ̄|川i| ̄\
889名無し~3.EXE:2008/07/05(土) 13:58:04 ID:4ebRKxUn
ム板のバッチスレは若干1名基地外が居るんだよな
ひたすらこのスレへ誘導する奴
890名無し~3.EXE:2008/07/05(土) 15:49:45 ID:puWbXOXI
疎開スルー
891名無し~3.EXE:2008/07/07(月) 08:55:17 ID:WBvdDtox
waitってどうするの?
892名無し~3.EXE:2008/07/07(月) 12:57:56 ID:qBTBgohG
子プロセスのいずれかが終了するまで呼び出し元のプロセスの実行を一時停止するんだよ。
893名無し~3.EXE: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:2008/07/10(木) 05:42:57 ID:3Yg2z5Jp
di && echo a || dir
896名無し~3.EXE:2008/07/10(木) 15:33:43 ID:X3fvq8uU
if/?
897名無し~3.EXE:2008/07/10(木) 22:00:40 ID:13vKihBB
>>895
ザンネン
898名無し~3.EXE:2008/07/10(木) 22:05:26 ID:13vKihBB
IF %ERRORLEVEL% == 0 (dir) ELSE (ECHO a)
899名無し~3.EXE:2008/07/11(金) 00:16:03 ID:Vdv4UCdi
直前のコマンドが例えばdelの時はどうする?
900名無し~3.EXE:2008/07/11(金) 01:26:51 ID:RkW4GqgN
あ〜なるほどね。DEL は ERRORLEVEL を返さないな。
DEL の前に IF EXIST するか、
DEL の後に IF EXIST するか、
樹海で祝ってやるか、
どれかだな。
901名無し~3.EXE: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+
一つ目のプログラムを引数つきで実行させて
それが終わったら次も同じって感じにするのはどうやったらいいでしょうか。
903902:2008/07/11(金) 18:33:00 ID:NOWkZyK+
流れ適には
cd カレントパス(batファイルのある場所)
program -i カレントパスと指定文字列を足したファイル名
って感じです。
904名無し~3.EXE:2008/07/11(金) 20:10:18 ID:lw6JvueF
>>902
:hoge
hoge.exe hogehoge
goto hoge
905名無し~3.EXE:2008/07/12(土) 04:18:41 ID:yD5Tkok7
CD %~dp0
program -i %CD%\指定文字列
906名無し~3.EXE: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: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: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:2008/07/14(月) 13:57:41 ID:oDYeyaeV
つdebug
912名無し~3.EXE:2008/07/14(月) 19:43:37 ID:n25RoDk2
xpにテルネットでファイルを編集したいんですが
デフォルトのコマンドのみで可能ですか?
913名無し~3.EXE:2008/07/14(月) 20:51:29 ID:WHXSuf0b
どんなマシンからどんなマシンへ接続するんだよ
914名無し~3.EXE:2008/07/15(火) 00:13:59 ID:xfeqMLQj
それを言えば、できるようになるのかな???
915名無し~3.EXE:2008/07/15(火) 00:22:15 ID:qYFgCPso
vistaはeditが復活してたんですっ飛んできました
916名無し~3.EXE:2008/07/15(火) 00:45:59 ID:IxC+30HX
edlin
917名無し~3.EXE:2008/07/15(火) 01:24:43 ID:qYFgCPso
edlinって人間にも使うことができるものなんですか!?
918名無し~3.EXE: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:2008/07/15(火) 21:08:10 ID:xfeqMLQj
素直に「できません」と、なぜ言えない?決して恥ずかしい事では無いんだぞ。
921名無し~3.EXE:2008/07/16(水) 01:44:51 ID:pxO0gOcj
ほんとだEditがある。英語だけど w
922名無し~3.EXE: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:2008/07/16(水) 03:24:31 ID:+miDdALN
実際に使ってみると難しいエディタじゃないぞ <<EDLIN
元々使う理由は無いけどVistaでは本気で使えなくなったな
924名無し~3.EXE:2008/07/16(水) 13:43:04 ID:o0wLnRgo
>>912
可能
for + set + echo
925名無し~3.EXE:2008/07/16(水) 16:47:45 ID:CHcrAZte
東京から沖縄まで歩いて行くことが出来ますか?
926名無し~3.EXE: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:2008/07/16(水) 22:40:22 ID:3tFT2zCk
海底も歩けるよ!
929名無し~3.EXE:2008/07/16(水) 23:11:31 ID:/0LA4MwY
すんません
ftpを簡単にするにはどんな書き方がありますか?
930名無し~3.EXE:2008/07/16(水) 23:43:01 ID:m92DBgjO
>>929
FTPコマンドの自動化について言ってるのであれば、
FTP スクリプチ
で検索して下さい。

それ以外である場合、回答できるAAAクラスのエスパーがこのスレにはいないと思われるので、
どうしたいのか詳細を書いて下さい。
931名無し~3.EXE:2008/07/17(木) 00:20:26 ID:s7qUL6sJ
FTP スクリプチの検索結果 11 件中 1 - 11 件目 (0.26 秒)
932名無し~3.EXE:2008/07/17(木) 00:49:55 ID:avMHCYlH
すくりぷち☆
933名無し~3.EXE:2008/07/18(金) 01:19:22 ID:nPyhhALC
batファイルでコマンドラインエディタを作るというのは
どのくらい大変そうですか?
934名無し~3.EXE:2008/07/18(金) 01:50:22 ID:XFnK5WyO
コマンドラインエディタ.bat
edlin %*
935名無し~3.EXE: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=(パスワード) http://.......
でとってきてくれる。

ここまではいいのですが、ユーザ名にスペースが使われていて
wget --user=A BC --password=pass とやると
区切り文字はスペースだからユーザ名は"A"と判別してしまう。

区切り文字をカンマ","にすれば
wget,--user=A BC,--password=pass,http://.....
とやってコマンドが通るような気がする。

http://(ユーザ名):(パスワード)@www.
ともかけるので
http://A BC:pass@www
とやってみたが、区切り文字がスペースなのでエラーになってします。

どなたかお知恵を拝借願えないでしょうか。
937名無し~3.EXE: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:2008/07/23(水) 18:54:02 ID:0Y5OUEnX
--user=ABC で通らない?
940名無し~3.EXE:2008/07/25(金) 00:00:00 ID:cCrHmHxM
半角スペース含まれてるから、じゃねーの。>936にあるが。
うちは--user"A BC"でいけてるが。
941名無し~3.EXE:2008/07/27(日) 20:57:41 ID:dtq3Xkle
dos窓でcdするときに、ドライブを跨ぐとなぜ/Dオプションなんてつける必要があるんですか?
C:\>cd D:\hoge\hogeで通じるんじゃないでしょうか?
942名無し~3.EXE:2008/07/27(日) 21:20:35 ID:X4TwxPee
>941
ドライブ毎にカレントディレクトリの情報を持ってるから、とでも言えば良いのかな。
そもそも、カレントドライブ変更とカレントディレクトリ変更は本来別の操作。

カレントドライブの変更は
d:
と打てばDドライブへ。
c:
と打てばCドライブへ。

カレントディレクトリの変更は、ご存じの cd コマンド。

確か cd に /d オプションが付いたのは途中のバージョンからだったような。
/d は「ドライブを跨ぐ」というより「ドライブ変更とカレントディレクトリの変更を同時にやる」って感じ。
943名無し~3.EXE: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: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:2008/07/28(月) 01:23:44 ID:+5Fl+5Tm
>winRARがエラーを出して
なにかエラーメッセージのようなものは表示されないの?
946944:2008/07/28(月) 01:31:07 ID:GG94rwXw
>>945
winRAR診断メッセージ 追加するファイルがありません。
コマンドプロンプト プロセスはファイルにアクセスできません。別のプロセスが使用中です

この時点でフォルダ111下のファイルは無くなってます。zipも作成されていません。
947名無し~3.EXE: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:2008/07/28(月) 04:06:42 ID:lvsdyRXC
STARTは最初の""をタイトルと判断する、みたいな仕様がなかったっけ?
START "" /W "C:\Program Files\WinRAR\WinRAR.exe"の方が無難な感じ。
949名無し~3.EXE:2008/07/28(月) 22:44:13 ID:Flw63PUR
すいません
Dosのコマンドラインで、Unix系より優れていると言える所ってありますか?
950名無し~3.EXE:2008/07/28(月) 22:49:37 ID:EkjbpQg3
DOSコマンドが使える
951944:2008/07/28(月) 23:24:35 ID:GG94rwXw
>>947,948
start "" /w の追加で正常に動くようになりました。ありがとう。
952名無し~3.EXE:2008/07/28(月) 23:54:52 ID:gS9ca/Z8
>949
ホンモノのMS-DOS時代はDOSアプリが結構あったからまだ良いんだけど
コマンドプロンプトになってからは、利点あんまり無いな。
そもそも、GUIであるWindowsに取って付けたようなアプリケーションだし。
Unix系はコマンドないと手が届かない部分が結構あるからこそ、充実してるとも言えなくもない。
953名無し~3.EXE:2008/07/29(火) 00:02:49 ID:UhTEv5gP
ひとそれぞれじゃないか。
コマンドに慣れて無い人は窓を使えばいい。
無理してコマンド使うこたぁねぇよ。
954名無し~3.EXE:2008/07/29(火) 00:04:07 ID:UhTEv5gP
すいません
Windowsの窓アプリで、Unix系より優れていると言える所ってありますか?
955名無し~3.EXE:2008/07/29(火) 00:13:06 ID:HMBDDzG4
その歴史からWindowsのデスクトップアプリのほうが圧倒的に使える物が多いよ。
まだ、かもしれないけどね。
956名無し~3.EXE:2008/07/29(火) 01:54:15 ID:CkAA5d8W
「Dosのコマンドライン」ってのが何を指してるのか分からないけど
最大のメリットは現状のトップシェアOSであるWindowsで標準で使える
ってことだと思う。
957名無し~3.EXE:2008/07/29(火) 12:51:26 ID:luJdVJDk
分からないならレスしなくていいです。すっこんでてください。
958名無し~3.EXE:2008/07/29(火) 19:27:14 ID:dTIjqH8+
Linuxがすべての面で優れててDOSが劣る存在だと主張するやつは人間として糞
NTメインになってDOSは確かに使わない時代になったとおもうよ。けど
唯物論はこのOS飽和時代に全く意味は無いだろ?好きなのを適宜習得すればいいの
>>954はWINDOWS板にわざわざやってきてごくろうさんね。何を考えてるんだろうな。
959名無し~3.EXE:2008/07/29(火) 19:31:59 ID:3B2nZuAV
偉い人は下を見て馬鹿にする暇があるなら、使いにくいUNIXのコマンドラインよりももっとすばらしいものを開発してください。
960名無し~3.EXE:2008/07/29(火) 19:48:24 ID:s013n4jE
PowerShell
961名無し~3.EXE:2008/07/29(火) 19:51:35 ID:HMBDDzG4
>>957-959
レスのレベルからして自演にしかみえん。面白くないよ。
962名無し~3.EXE:2008/07/29(火) 19:55:48 ID:HMBDDzG4
>>960
マジレスでUNIX系のシェル超えててワロタw
963名無し~3.EXE:2008/07/29(火) 23:21:52 ID:luJdVJDk
プッ・・・ゲイツのオナニーやん
964名無し~3.EXE:2008/07/31(木) 01:33:03 ID:7MvSvBeb
DOS窓が使いにくいんだよ
tera termみたいのでつなげないの?
自分にtelnet以外で
965名無し~3.EXE:2008/07/31(木) 01:36:22 ID:oJH/78M3
ckwmodでも使ったら?
966名無し~3.EXE:2008/07/31(木) 01:41:27 ID:7MvSvBeb
>>965
それなに?
967名無し~3.EXE:2008/07/31(木) 06:48:12 ID:tRdZkavP
すいません、質問です。
Dosプロンプトで、ファイルの更新日時やアクセス時刻を変更出来るコマンドはありませんか?
(いわゆる、Unixでいうところのtouchや、utime関数に相当するものです。)

一応ぐぐってみたのですが、それを実現するフリーのファイラーソフトとかはあるようなんですが、
コマンドプロンプト(またはbatファイル)のみで(何も追加インストール等せずに)実現することは出来ないでしょうか?

copyやxcopyでは、元のファイルのタイムスタンプを保持してしまいます。
ちなみにOSはXP-sp2です。
968名無し~3.EXE:2008/07/31(木) 10:56:39 ID:CZC3VFh2
>>967
自分はNircmd使ってる。(他にも実現できるToolあると思うけど)
標準cmdではコマンド無いんじゃないか?
969名無し~3.EXE:2008/07/31(木) 12:12:43 ID:pmbkfmD5
>>967
type nul >>file
970名無し~3.EXE:2008/07/31(木) 12:37:44 ID:Z+lCCPZ/
>>968
ありがとうございます。ちょっと調べてみます。

>>969
うおおお、そんな手があったとは・・・・。
そういえば自分も、Unix環境でなら、0byteのファイル作成したり、
圧縮済みのlogファイルを切り詰める時に、cp /dev/null /path/to/file とかやったことがあります。
971名無し~3.EXE:2008/07/31(木) 16:58:05 ID:pqUdStB6
だったら、
COPY NUL C:\path\to\file
でいいんじゃない?
972名無し~3.EXE:2008/07/31(木) 19:18:57 ID:pmbkfmD5
COPY C:\path\to\file + NUL C:\path\to\
973名無し~3.EXE: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:2008/08/01(金) 05:25:26 ID:AzeG6fL3
夏だね
975名無し~3.EXE:2008/08/01(金) 07:24:39 ID:KkABB+VG
リネーム先のファイル名に?つける気持ちはわからんでもないが、その?は無意味

for %i in (A0?.bmp) do ren %i 1%i
976名無し~3.EXE:2008/08/01(金) 22:00:53 ID:cUFqKgt+
>>975

ありがとうございました。* が1文字の変数のように機能すると勘違いしていました。
977名無し~3.EXE: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: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:2008/08/02(土) 16:45:44 ID:lHCG365N
>>978
盲点でした ありがとーございましたm(__)m
980名無し~3.EXE:2008/08/02(土) 17:08:46 ID:elSen6IZ
そのやり方じゃ処理速度が悪いけどな
981名無し~3.EXE:2008/08/02(土) 20:59:50 ID:lHCG365N
>>978だと遅かったのでやっぱり200個ごとにまとめて処理→最後にまとめたやつをさらにまとめる にしました
982名無し~3.EXE:2008/08/02(土) 23:16:35 ID:2oS7zYXl
0000〜9999を一つのフォルダに纏めて

copy /b * ..\all.zip
983名無し~3.EXE:2008/08/03(日) 02:46:10 ID:87Ih2WMQ
たしk
984名無し~3.EXE:2008/08/03(日) 02:50:21 ID:87Ih2WMQ
埋め
985名無し~3.EXE:2008/08/03(日) 03:05:42 ID:87Ih2WMQ
埋め
986名無し~3.EXE:2008/08/03(日) 12:00:57 ID:87Ih2WMQ
埋める
987名無し~3.EXE:2008/08/03(日) 12:23:56 ID:87Ih2WMQ
埋める
988名無し~3.EXE:2008/08/03(日) 12:29:16 ID:87Ih2WMQ
埋める
989名無し~3.EXE:2008/08/03(日) 12:30:22 ID:87Ih2WMQ
990名無し~3.EXE:2008/08/03(日) 12:34:54 ID:87Ih2WMQ
991名無し~3.EXE:2008/08/03(日) 12:41:59 ID:87Ih2WMQ
992名無し~3.EXE:2008/08/03(日) 12:43:04 ID:uyRUdrj/
次スレ建てる前に埋めるなボケ
993名無し~3.EXE:2008/08/03(日) 12:48:22 ID:87Ih2WMQ
994名無し~3.EXE:2008/08/03(日) 12:50:53 ID:87Ih2WMQ
995名無し~3.EXE:2008/08/03(日) 12:52:45 ID:87Ih2WMQ
996名無し~3.EXE:2008/08/03(日) 13:06:12 ID:87Ih2WMQ
すみません。
やめます。
997名無し~3.EXE:2008/08/03(日) 13:25:54 ID:LQkUy7Y5
埋めるなら次スレ建てろボケ。
998名無し~3.EXE:2008/08/03(日) 13:38:42 ID:Ni7TLdDU
勃てろだと?
お前が勃てろよ
999名無し~3.EXE:2008/08/03(日) 13:40:29 ID:LQkUy7Y5
なんだと!
1000名無し~3.EXE:2008/08/03(日) 13:40:50 ID:LQkUy7Y5
勃った

初心者〜管理者まで必読!コマンドライン(DOS Pt.7)
http://pc11.2ch.net/test/read.cgi/win/1217738171/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。