ユーザー必読!コマンドライン(DOS Pt.6) at WIN
ユーザー必読!コマンドライン(DOS Pt.6) - 暇つぶし2ch1:名無し~3.EXE
07/04/14 22:52:56 hbxFcMHM
適材適所で GUI と CUI を組み合わせて、 (゚д゚)ウマー

前スレ
1 URLリンク(pc.2ch.net)
2 URLリンク(pc5.2ch.net)
3 スレリンク(win板)l50
4 スレリンク(win板)l50
5 スレリンク(win板)l50

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

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

2:名無し~3.EXE
07/04/14 22:53:39 hbxFcMHM
関連スレ

バッチファイルプログラミング 3.bat
スレリンク(tech板)l50

■★▲DOSはまだ現役! Drive.B:
スレリンク(os板)l50


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

4:名無し~3.EXE
07/04/15 10:32:11 SIUF16m0


5:名無し~3.EXE
07/04/15 18:28:27 OzCFcZOC
名無し~3.EXEは良くない
名無し~3.COMか名無し~3.BATにするべきだ


6:名無し~3.EXE
07/04/15 18:55:01 P6RjSyHQ
rundll32 kernel32.dll,SetSystemPowerState
は効かないのはなぜだろ

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


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

9:名無し~3.EXE
07/04/16 20:38:24 lm+JRBwI
できたできた。ありがとう。

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

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


10:名無し~3.EXE
07/04/22 17:26:15 gGQB4N53


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

12:名無し~3.EXE
07/05/04 05:44:13 Hk96JH7Z
どうにかすることも出来るけど、cueシートの操作はwshとかの方がいいよ

13:11
07/05/04 07:58:10 DU0ceJxS
>>12
wshというものの存在をはじめて知りました…勉強して出直してきます

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

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

15:名無し~3.EXE
07/05/04 08:08:03 Hk96JH7Z
>>13
可能だよ

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

17:名無し~3.EXE
07/05/04 16:01:49 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
07/05/04 16:23:49 KUqa9e+R
エスパーな俺がお前のBATファイル名はshutdown.batだと透視した。

19:名無し~3.EXE
07/05/04 16:29:21 6iB+pe0c
>>18
キミ、マジで天才

20:17
07/05/04 16:42:26 SLT3oq8P
>>17
思わず後ろを振り返っちまっただよ。

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

21:名無し~3.EXE
07/05/04 19:43:35 EyJempdz
>20
爆笑。

22:名無し~3.EXE
07/05/04 21:43:22 R5kvvwgs


23:名無し~3.EXE
07/05/05 15:50:54 kP//l2AG
un信じrable

24:名無し~3.EXE
07/05/07 19:25:07 Num9bxOL
自問自答自讃でもいいから新ネタでお願いします

25:名無し~3.EXE
07/05/08 21:33:06 sjfhnHyh
ネタ投下
md con.\
ってどういう理屈でそういう結果になるの?

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

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

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

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


29:名無し~3.EXE
07/05/09 13:20:42 fkBIoDjl
>>27
> for文のコマンドの中にパイプが組み込めないので

パイプを^でエスケープ

30:名無し~3.EXE
07/05/09 17:12:00 ADeKrMMD
>>27
>パイプ
SED使わずにやればいいのに

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


31:27
07/05/09 18:13:37 bjubhlyI
>>28-30
レス㌧クス

>>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
07/05/09 18:51:00 ADeKrMMD
for /f "tokens=1-2*" %%1 in ( ) do if %%1=SENDTO set reg=%%3
かな?


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

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

35:名無し~3.EXE
07/05/09 19:19:38 fkBIoDjl
>>32
skip=4の方がシンプルでいいと思うけど

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

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

37:名無し~3.EXE
07/05/09 19:36:28 0CVMi5If
キー名じゃなくてキーの値の名前だったorz

38:名無し~3.EXE
07/05/09 19:58:27 fkBIoDjl
>>36
> ファイルパスって前提

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

39:名無し~3.EXE
07/05/09 19:58:51 0CVMi5If
文句だけ言って修正方法を示してなかった。

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

40:27
07/05/09 20:21:29 bjubhlyI
>>32-39
レス㌧クス

>>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
07/05/11 11:16:52 stFG0Iol
schtasksでタスクを登録するときに、「タスクの実行時にスリープを解除する」をONにするにはどうしたらいいですか。

42:名無し~3.EXE
07/05/11 15:16:11 Fg7QQDj2
>>41
jt.exeを使用して、プロパティにSystemRequired=1を指定する。
URLリンク(www.windows-world.jp)

-- 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
07/05/11 20:20:42 stFG0Iol
>42
どうもありがとうございます。
やってみます。

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

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


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

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

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

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

どうしようorz。

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

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

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

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

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

51:名無し~3.EXE
07/05/14 02:22:40 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
07/05/14 03:11:22 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
07/05/14 03:28:34 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
07/05/14 03:29:57 66G3PQU8
FORの問題なら遅延展開にすれば回避できるかも
ただしIN ('コマンド')はサブシェルで実行されるので
IN ('cmd /v:on /c dir /b "!filepath!"')
みたいに

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

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


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

58:名無し~3.EXE
07/05/14 21:03:27 eTP8kcfM
こんばんわ。

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

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

59:名無し~3.EXE
07/05/14 23:16:54 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
07/05/14 23:22:12 MCFCwKH0
・4で割り切れる年はうるう年
・100で割り切れる年はうるう年でない
・400で割り切れる年はうるう年
・2000で割り切れる年はうるう年ではない
の間違い

61:名無し~3.EXE
07/05/14 23:26:54 MCFCwKH0
すまそ
・2000で割り切れる年はうるう年ではない
は間違いのようだ。記憶違いだったみたい。

62:名無し~3.EXE
07/05/14 23:40:16 MCFCwKH0
質問の直接の回答だが、

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

63:名無し~3.EXE
07/05/15 00:31:30 dFS1GUhg
キミ、マジで天才

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

65:名無し~3.EXE
07/05/15 09:33:45 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
07/05/15 09:34:46 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
07/05/15 09:36:01 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
07/05/15 09:36:43 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
07/05/15 09:37:29 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
07/05/15 09:51:27 TTbohgLv
補足
>>59のアルゴリムは少し考えが足りなかったので、サブルーチン側で差分日まで
算出し、その日付を返すようにした。 環境変数 %YYYYMMDD%

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

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

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

71:名無し~3.EXE
07/05/16 12:56:13 7/cOdyGm
自演?

72:名無し~3.EXE
07/05/17 18:11:54 xG9pEqHy
wsh使ったほうが簡単なのにご苦労さん


73:名無し~3.EXE
07/05/17 18:29:25 818pu52B
ちゃんと月数で日にちまで補正してくれるね。

20080331 -m -1 = 20080229

20080331 -m -13 = 20070228

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

75:名無し~3.EXE
07/05/18 12:18:21 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
07/05/18 12:19:57 N8xUsF93
すみません
for %%I in (c:\abc\*) do call set list=%%list%%;%%~nI
でした

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

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



78:27
07/05/18 17:38:32 QurTryuC
途中で書き込みしてしまいました。
ネタ投稿!
教えていただきたいことがあります。
SREP / 標準入力ファイルをコマンドに渡して実行 URLリンク(dmz.xrea.jp)
このソフトは、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
07/05/18 18:57:24 U0IwhG1h
>>78
DIR *.*


80:27
07/05/18 19:54:01 QurTryuC
>>79
レス㌧クス

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

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
07/05/18 20:18:56 U0IwhG1h
>>80
set x=DIR *.*
%x%
または
echo DIR *.*|cmd.exe

82:名無し~3.EXE
07/05/18 21:33:23 qUpsnBjq
これでできそうな気がするが、「>」とか含まれてるとダメぽ

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

83:名無し~3.EXE
07/05/18 21:45:26 99LGC3ci
それ以前にこの順で書くとダメぽ
do echo>>%%A.csv %%B

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

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

85:名無し~3.EXE
07/05/19 13:13:12 gV4BneKY
>>84
もう結論が出てるじゃないですか。
他のものを試してみては。

Windows 2000/XP でログオフ/シャットダウン/再起動アイコンを作るには?
URLリンク(homepage2.nifty.com)
タイマー指定可能な小型軽量シャットダウンコマンド
URLリンク(www.vector.co.jp)
お勧めのシャットダウン プログラム
URLリンク(homepage2.nifty.com)

86:名無し~3.EXE
07/05/19 18:20:22 MzggPKBH
>>84
無理

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

88:名無し~3.EXE
07/05/20 02:19:36 Zd3Z0KcV
>>87
制限ユーザーにAdminのユーザー名とパスワード知られたら意味ないじゃん。

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

90:名無し~3.EXE
07/05/20 05:38:46 aqxTfgS4
ヒント:過去ログ


91:名無し~3.EXE
07/05/21 14:08:21 0d+ZaNGt


92:名無し~3.EXE
07/05/22 23:57:15 DXps0jfC
age失礼します。

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

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

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

93:名無し~3.EXE
07/05/23 00:15:21 SSq40r1e
findstr /?

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

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

95:名無し~3.EXE
07/05/23 00:30:25 z/fSw5qr
>>93
ありがとうございますm(_ _)m

96:名無し~3.EXE
07/05/23 00:35:02 5wOgLhAV
>ここにいるとfor病になってしまう
あー、あるある

97:名無し~3.EXE
07/05/23 00:36:16 z/fSw5qr
>>94
そうなんですか。。ありがとうございます。
何かとFOR使ってしまうところがあって。。

98:名無し~3.EXE
07/05/23 00:47:57 nAmeHJsa
まあ、forの方の対処も覚えといて損はないよ。
"delims="
findstrの方は、/cかな

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

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

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

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

102:名無し~3.EXE
07/05/23 01:00:32 9lvFrJAs
つ findstr /?

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

103:名無し~3.EXE
07/05/23 01:05:55 z/fSw5qr
>>102
ありがとうございます。
できた・・・。

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


105:名無し~3.EXE
07/05/24 21:11:54 KEd+r5mO
はあ?

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

107:名無し~3.EXE
07/05/25 22:32:49 fAyZ4XY3
findは複数文字列サポートしてないだろ

108:名無し~3.EXE
07/05/26 00:08:02 nd32zRgJ
はあ?

109:名無し~3.EXE
07/05/26 00:13:45 g8UzYY61
はぁ。

110:名無し~3.EXE
07/05/26 00:19:03 YMAjJ4KA
はっぁー

111:名無し~3.EXE
07/06/11 07:47:49 ieH1oTGK


112:名無し~3.EXE
07/06/12 18:04:25 Ldj+OzYg
どっひゃー

113:名無し~3.EXE
07/06/15 00:15:35 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
07/06/15 00:47:46 Ac8c+en4
おまいらの大好物キタ━(゚∀゚)━ !!

115:名無し~3.EXE
07/06/15 02:37:09 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
07/06/15 02:37:47 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
07/06/15 02:38:42 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
07/06/15 05:46:07 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
07/06/15 18:45:34 7cDfHIWt
>>118
途中の階層のディレクトリの中にファイルが存在してたらそのファイルまで移動されちゃうぞ

120:名無し~3.EXE
07/06/16 00:12:08 0FhZKQDj
忘れ物だよ

つ 要件定義フェーズ

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

122:名無し~3.EXE
07/06/16 08:48:31 zaoBWCRQ
要するに>>113は救いようもない程におバカだったってことだね

123:名無し~3.EXE
07/06/16 14:38:01 7bk03Znc
ディレクトリが空だって判定するスマートな方法ってどうやるの?

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

124:名無し~3.EXE
07/06/16 19:02:59 CXEmvWRn
DIR /B "C:\hoge" | FIND /V "" > NUL で ERRORLEVEL=1 なら空。
ってのは強引?


125:名無し~3.EXE
07/06/18 01:45:27 H6wUdAfo
読みやすさ優先ならfor /r と set /a ってなところだろうけどねぇ

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

127:名無し~3.EXE
07/06/21 04:59:20 s2INtICy
cmd.exeって激しく使いにくいんだけど替わりになるフリーソフトって何かない?

128:名無し~3.EXE
07/06/21 08:18:21 EssH3dBi
つ【ActivePerl】

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

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

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



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

133:名無し~3.EXE
07/06/23 03:10:03 9gQ/tesN
>TABでの補完
してる場合って、実際をTABしたい場合はどうしてるんですか?

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

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

135:名無し~3.EXE
07/06/23 07:36:40 LpBOoalT
あるとしたら正規表現中に\t入れるぐらいだわな

136:名無し~3.EXE
07/06/23 14:38:32 V6yGWUpq
実Tabって使ったことないな。

137:名無し~3.EXE
07/06/23 15:02:52 ckZdOOmB
Tabはタブーだからね

138:名無し~3.EXE
07/06/23 19:16:48 LpBOoalT
darega umaikoto ieto

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

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

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

142:名無し~3.EXE
07/06/26 19:01:40 Bg2uMH0m
tabはシステム環境変数に入れとくよ

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

144:名無し~3.EXE
07/06/26 19:40:42 WXGDVtW4
TABを使いたい時だけcmd /f:offを実行して使い終わったらexit

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

145:名無し~3.EXE
07/06/26 20:59:48 uoA+Xcia
その別のキーの文字を入力したくなったらどうするのさ?

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

147:名無し~3.EXE
07/06/27 05:07:31 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
07/06/27 06:06:13 TZPENXns
>>147
[数字]だと文字列の比較になるので。
[]を取っ払えば数字としての比較になる。

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

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

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

152:名無し~3.EXE
07/06/27 17:47:58 2QApMI8R
>>143
遅延展開は関係ないだろ

153:名無し~3.EXE
07/06/27 22:11:08 lvppcSdl
はあ?

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

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

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


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

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

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


159:113
07/06/28 23:03:15 bHfzd9Lz
色々教えていただいてありがとうございます。

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



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


160:113
07/06/28 23:11:14 bHfzd9Lz
むむ
/b/xは一緒に出来ないようですね

161:113
07/06/28 23:56:29 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
07/07/04 01:42:29 abxJ+p1r
環境変数に現在のディレクトリを設定するにはどうすればよいのでしょう?
set hoge=%0 としてもうまくいかないorz

163:名無し~3.EXE
07/07/04 02:04:17 XwTWde1q
pushd

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

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

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

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

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

167:名無し~3.EXE
07/07/04 02:46:16 Zwtmh2SZ
set /?
call /?
そして毎度おなじみ for /?

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

169:名無し~3.EXE
07/07/04 05:06:14 mIR/jNv3
定数?

170:名無し~3.EXE
07/07/05 02:28:26 hAzDK9l7
あんなもので感動できる幸せな人生(はあと

171:名無し~3.EXE
07/07/05 20:24:40 mJP5Jzub
捻くれた物の見方をしてれば大人になった気分♥

172:名無し~3.EXE
07/07/06 08:17:18 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
07/07/06 08:19:32 gFjF/2om
途中で書き込んでしまいました。続きです。

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

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

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

174:名無し~3.EXE
07/07/06 09:46:59 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
07/07/06 18:46:41 aZ88EIgF
cd /d "C:\System Volume Infomation\_restor*\snapshot"
for /f %a in ('dir /ad /b /od rp*') do set SAISIN=%a
cd "%SAISIN%"
copy _REGISTER_MACHINE_SYSTEM C:\WINDOWS\system32\config\SYSTEM


176:173
07/07/06 19:34:36 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
07/07/06 21:47:55 gFjF/2om
URLリンク(www.geocities.jp)

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

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

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

if "%~1" == ""

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

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

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

181:名無し~3.EXE
07/07/07 00:19:10 OhijueHL

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

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


183:名無し~3.EXE
07/07/07 13:54:44 2fDZSvpN
%1→"%1"
%2→"%2"
%~f1→"%~f1"
%~f2→"%~f2"
%~z1→"%~z1"
%~z2→"%~z2"
最終行に「:EOF」を追加

これでどうだ?

184:名無し~3.EXE
07/07/07 13:56:22 2fDZSvpN
うへ、ミスった

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

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


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

186:名無し~3.EXE
07/07/07 16:21:20 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
07/07/07 16:52:20 57vtk9UF
>>186
泥臭いけど、結果をファイルにリダイレクトしといて、そのファイルにfindstrするとか。

188:名無し~3.EXE
07/07/07 17:20:21 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
07/07/07 17:36:10 OhijueHL
修正
ftp -n -s:ftp_open_check.txt 2&>1 | find "220" >nul

190:名無し~3.EXE
07/07/07 17:46:31 d6rD1byQ
なんというか・・・素晴らしいというか凄いというか、いやはや・・・。

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

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

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

ftp -?

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

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

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

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

193:名無し~3.EXE
07/07/07 19:06:28 OhijueHL
ヘルプだけで結構わかるもんだよ。
set /?
if /?
for /?
call /?
goto /?
cmd /?
setlocal /?
echo /?

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

195:名無し~3.EXE
07/07/07 20:06:47 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
07/07/07 20:39:29 d6rD1byQ
>>195
うわー残念。Windowsを徹底的にチューニングして無駄な物、要らない物を削除
しまくっているのでヘルプファイルとか全部既に消してあるから開けない・・・・。

197:ID:2fDZSvpN
07/07/08 02:15:06 3Owpm7dd
>>185
判ってはいるが、それが無いと何となく気持ち悪いので俺はいつも付けてる。

198:名無し~3.EXE
07/07/08 09:16:58 OzdlBfMw
>>196
あほですか?

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

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

200:名無し~3.EXE
07/07/08 10:30:17 /ja/+eZN
>>197
goto :eof と
goto eof の違いは判ってんのか?

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

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

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

202:名無し~3.EXE
07/07/08 13:11:07 tecQhfCB
exit /b 使ってる。必要なら終了コード付けられるし。

203:名無し~3.EXE
07/07/08 16:51:02 NCTpwRJm
これだからヘルプを読まない人種は

204:名無し~3.EXE
07/07/08 18:05:49 IRXda/xa
ヘルプなんか読む奴は初心者

205:名無し~3.EXE
07/07/08 18:39:27 8kvqjQRq
ヘルプを読まない奴は中二病

206:名無し~3.EXE
07/07/08 22:27:24 yX0XbVid
ヘルプを歌うのはジョンレノン

207:名無し~3.EXE
07/07/08 23:27:27 27PU9C5t
ヘルプにはパラメー、ラメー(自粛

208:名無し~3.EXE
07/07/09 02:46:08 v3Zn7L3A
echo ヘルプネタはもういいよ。
pause > nul
goto :eof


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

210:名無し~3.EXE
07/07/09 18:13:31 +C6r4Cf5
>>209
ipconfig /?

211:名無し~3.EXE
07/07/09 18:37:10 avOS7hXh
ipconfigでは出来ないと思いますが…

212:名無し~3.EXE
07/07/09 18:52:30 +C6r4Cf5
IPを/releaseすればいけるかなと予想したんだが、、、

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

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

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

215:名無し~3.EXE
07/07/09 23:13:23 s2knvD30
>>213
WSHじゃなくて .batじゃ無理?

216:名無し~3.EXE
07/07/10 00:31:52 aY6Hj5YD
>>215
exe自作してbatから呼べばいいんじゃね?

217:名無し~3.EXE
07/07/10 07:42:18 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
07/07/10 08:12:31 bwIa74fK
batプログラムだと ユーザに Yes か No か  名前、性別等の入力をさせて
その入力結果に応じて処理をするという事は出来ないんですかね?
こういう処理はWSHですか?。


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

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

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

219:名無し~3.EXE
07/07/10 08:15:54 0DJ2pCRZ
set n=default
set /p n=input:
echo %n%


220:名無し~3.EXE
07/07/10 08:40:06 P6vaWxQy
キー・ストロークの送信とプログラムのアクティベーション
URLリンク(www.atmarkit.co.jp)

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

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

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

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

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


223:名無し~3.EXE
07/07/10 21:37:04 aY6Hj5YD
できません

224:名無し~3.EXE
07/07/10 22:07:11 vI/PS3tz
環境変数に分割していくしかないな

225:名無し~3.EXE
07/07/10 22:26:19 StBOT2v7
@echo off
echo very ^
long ^
command


226:名無し~3.EXE
07/07/11 12:05:59 dS7I7lnI
>>223-224
プギャー

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

227:名無し~3.EXE
07/07/12 22:25:22 VVU4dqVo
WSHについての質問です。

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

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

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

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

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


230:名無し~3.EXE
07/07/17 23:54:30 95VZVBFb
htaからbat実行すりゃいいんじゃないの

231:名無し~3.EXE
07/07/19 21:27:44 thElGmVj
choice.exe

232:名無し~3.EXE
07/07/20 23:18:59 V2dWSSNT
batからhta実行すりゃいいんじゃないの

233:名無し~3.EXE
07/07/22 18:28:26 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
07/07/22 22:33:17 1kQ2Scg2
コマンドラインからPrintScreenを押す方法はありますでしょうか?
環境はWindows Server 2003です

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

URLリンク(msdn.microsoft.com)

235:名無し~3.EXE
07/07/23 19:13:56 WByBtV4R
>>234
PrintScreenを押して何をしたいのかにもよるけど
フリーソフトで適当なのを使えばいいんじゃね?
URLリンク(search.vector.co.jp)

236:名無し~3.EXE
07/07/23 20:06:40 DslKxDc9
マルチ馬鹿にエサ与えんな
スレリンク(tech板:136-番)

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

238:名無し~3.EXE
07/07/23 22:50:33 2a12I535
%date% %time%

239:名無し~3.EXE
07/07/23 23:11:15 LD4VpkP3
>>237
BUでも使ったら?
URLリンク(hp.vector.co.jp)

240:名無し~3.EXE
07/07/23 23:14:26 ptbQjJRK
>>238
それは試したけど駄目だったです

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

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

242:名無し~3.EXE
07/07/24 00:28:47 OiAr7ahv
応答ファイル作ってみては?
エンターを標準入力する

date < enter.txt

243:名無し~3.EXE
07/07/24 00:54:25 zyICGXlS
わざわざファイルを作らなくても
echo.|date

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

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

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

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

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

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


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

249:名無し~3.EXE
07/07/24 01:45:14 OiAr7ahv
勘違い、忘れて

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

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

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

253:名無し~3.EXE
07/07/24 13:26:06 ZRCldvmk
アンインストール~♪ アンインストール~♪

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

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

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

255:254
07/07/24 17:07:37 1kH5Q7z7
すみません
自己解決しました

256:名無し~3.EXE
07/07/24 22:05:23 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
07/07/24 22:06:42 cEJUopRP
質問させてください。Windows98のバッチファイルで、
ネットワークドライブの情報と、使用しているプリンタ名の情報を
取得する事は出来ますでしょうか?

258:名無し~3.EXE
07/07/24 22:41:21 UeCXx0RV
EnumNetworkDrives
EnumPrinterConnections


259:257
07/07/24 22:49:55 cEJUopRP
vbsを今から勉強している余裕が無いんです…
バッチじゃ無理ですかね

260:名無し~3.EXE
07/07/24 23:00:45 FTD7xDte
@echo off
start /w regedit /e c:\aaaa.txt HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers
type c:\aaaa.txt
del c:\aaaa.txt


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

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

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

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

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

>>262
とりあえずヘルプの「コマンド ライン リファレンス」見れ
物足りなければこういうの買うか立ち読みしる
URLリンク(www.gihyo.co.jp)

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

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

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


265:名無し~3.EXE
07/07/26 01:35:36 gEngnIuG
オレが買ったのも>263の奴だ。結構良いと思うよ。


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

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

268:名無し~3.EXE
07/07/26 02:26:44 p3iWQA+4
適当に立ち寄った本屋にあったこれを買った俺は負け組み
URLリンク(www.amazon.co.jp)

269:名無し~3.EXE
07/07/26 08:12:26 5Vip6UWZ
>複雑なBAT

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

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

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

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

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

273:名無し~3.EXE
07/07/26 15:50:08 04gKUhKK
95は素では無理

274:名無し~3.EXE
07/07/27 01:06:16 rXnUgSS7
cd hoge >> log\normal.log 2>> log\error.log

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

275:名無し~3.EXE
07/07/27 01:15:31 dNpld2gr
(cd hoge >> log\normal.log) 2>> log\error.log

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

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

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

278:名無し~3.EXE
07/07/27 01:24:50 fMDvaNVV
copy /y
dir hoge
で試したけど問題なく動作したよ

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

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

281:名無し~3.EXE
07/07/27 01:48:08 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
07/07/27 01:48:48 rXnUgSS7
>>280
コード中に

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

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

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

284:名無し~3.EXE
07/07/27 08:13:51 rXnUgSS7
>>283
URLリンク(www.monochrome.jp)

これです。
で、私の勘違いだったようで、なんだか
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
07/07/27 11:30:18 +rjyunv5
誰も締めくくりたいなんて思っちゃいない予感

286:名無し~3.EXE
07/07/27 21:28:47 lyQPBbWY
82C8
82BE
82AD
82BD
82C1
82DC

287:名無し~3.EXE
07/07/27 21:33:47 BKYgm8FZ
まったくだな

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

289:名無し~3.EXE
07/07/28 18:50:31 m2ZCRxis
fsutil fsinfo drives

290:288
07/07/28 18:53:48 a/qCxIPC
どうもありがとう

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

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

292:名無し~3.EXE
07/07/30 14:58:07 le5R9q0P
>>291
感だから駄目かもしれないけど。
cd c:\windows
start

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

294:名無し~3.EXE
07/07/30 17:23:16 BT+WwteJ
>>292
>>293
無事元に戻すことができました
ありがとうございました

295:名無し~3.EXE
07/07/31 16:20:44 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
07/07/31 18:43:44 Hu1nS5yr
0Byteのファイルの作り方がわからん

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


297:名無し~3.EXE
07/07/31 18:45:01 Hu1nS5yr
>>296 ミスッた
if not exist ~ ね

298:名無し~3.EXE
07/07/31 19:25:23 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
07/07/31 19:30:28 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
07/07/31 19:36:10 Hu1nS5yr
いや echo.> test.txt だと2bytesになるっしょ。
それと else とか () は使えない。

301:名無し~3.EXE
07/07/31 20:24:25 1QfNp2Sl
type nul > po.txt

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

303:名無し~3.EXE
07/07/31 20:44:51 ChlSZmRF
CreateObject ("Scripting.FileSystemObject").CreateTextFile ".\test2.txt",True

304:名無し~3.EXE
07/07/31 21:11:25 mIH/KnHc
俺は
copy nul hoge
でやってた

305:名無し~3.EXE
07/07/31 23:22:23 XA8WQJFO
>304
そっちは確かNT系のWindowsのみ可能だったはず。

306:名無し~3.EXE
07/07/31 23:55:09 IK31m5SS
DOS/9x系なら
rem>hoge
ってのもある。

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

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

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

308:名無し~3.EXE
07/08/01 22:21:01 9V4T7tMX
cd.>fuga.txt

98/2k/Vistaで確認。

309:名無し~3.EXE
07/08/05 16:18:47 Bp/DvISo
XPではダメですか  つД`)・゚・。・゚゚・*:.。..。.:*・゚

310:>302,305
07/08/05 20:54:33 W6ka+1nd
>308
その手もあったか。XPでもできたよ。俺は>301の方法が最も無難だと思ってるが。

311:名無し~3.EXE
07/08/06 21:13:46 +YTckNXT

20070805.txt
20070804.txt
20070803.txt

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

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

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

313:311
07/08/07 22:19:14 mOWz8I7r
>>312
遅くなってすみません。
目的の動作が出来ました。
ありがとうございました!

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

これだけでいいんでわ…

315:名無し~3.EXE
07/08/08 23:50:03 d9CU6bSI
質問お願いします。

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


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

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

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


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

%temp2%^

%temp3%
echo !temp4!

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

317:315
07/08/09 00:40:16 YG2BLxw3
>>316
すみません。
XPで試したのですが、うまく行きません。

318:名無し~3.EXE
07/08/09 01:55:20 c4/2tjXG
>>317
つsetlocal enabledelayedexpansion

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

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

321:名無し~3.EXE
07/09/06 23:33:19 p7g9huyD
>>320
そうです!助かりました。ありがとうございます!

322:名無し~3.EXE
07/09/07 01:47:00 asFtjM75
C:\WINDOWS\pchealth\helpctr\binaries\HelpCtr.exe /url ms-its:ntcmds.chm::/ntcmds.htm

こっちだろ…

323:名無し~3.EXE
07/09/07 01:52:31 d+r8xArP
start helpctr /url ms-its:ntcmds.chm::/ntcmds.htm
または
hh ms-its:ntcmds.chm::/ntcmds.htm

324:名無し~3.EXE
07/09/10 13:18:02 HtOy1mDZ
BATの質問です。
条件分岐はどの様にやれば宜しいのでしょうか。

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


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

325:名無し~3.EXE
07/09/10 13:51:50 AyQQeB8K
>324
MD-DOS時代にはChoiceで選択できたらしい
今はそれが使えないからChoiceの代わりにこういう風にする
URLリンク(haoki.hp.infoseek.co.jp)

326:名無し~3.EXE
07/09/10 18:29:06 HtOy1mDZ
>>325
うまくいきました。
ありがとうございました。

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

328:名無し~3.EXE
07/09/11 16:52:42 Coumuge0
choice.exeは無償のものがMSからdownloadできる。

329:名無し~3.EXE
07/09/13 00:30:10 ZL/yiW6X
チョイっとね♪

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

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

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

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

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


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

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

336:名無し~3.EXE
07/09/17 11:43:28 qFWL8DrH
if exist でかくにんしれ

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

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

339:名無し~3.EXE
07/09/18 03:46:19 gdYBVbuE
for /f


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

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

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

343:名無し~3.EXE
07/09/18 22:23:59 OeER2hXe
何を言っているんだ

344:340
07/09/18 22:35:51 VaDU0MRP
>>343
ごめんなさい。.vbsって実行できますよね。
勘違いしてたみたいですね。
ありがとうございました。

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

346:名無し~3.EXE
07/09/19 04:12:41 xdlzKm9f
>>344
>>.vbsって実行できますよね。

できませんよ。

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

348:名無し~3.EXE
07/09/19 10:34:13 hmqMAoL+
なんでWSHが実行できないの?禁止されてる環境なのか?

349:名無し~3.EXE
07/09/19 22:42:31 xdlzKm9f
>>348
Windows 3.1 とか、Win95(with out IE)とか

350:名無し~3.EXE
07/09/20 11:01:44 1uTHvdSs
そういやWin95のOSR2でもWSHを使える環境と使えない環境を見た覚えがある。

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

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


353:名無し~3.EXE
07/09/22 14:41:01 K4jH93N6
FireFoxはNT4.0ならサポートしてるな。

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

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

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

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

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

357:名無し~3.EXE
07/09/23 09:46:45 Tq1GuzbT
月曜は休みだぞ

358:名無し~3.EXE
07/09/23 10:06:36 ZAaCzpBz
うちの会社は出勤日だ

359:名無し~3.EXE
07/09/23 12:54:59 oPSAXKaI
452

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

361:名無し~3.EXE
07/09/23 18:38:08 BAQKEi+X
そうですね。

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

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

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



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch