バッチファイルプログラミング 2.bat

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
前スレ
バッチファイルプログラミング質問スレ
http://pc5.2ch.net/test/read.cgi/tech/1040614686/

関連スレ
初心者〜管理者まで必読!コマンドライン(DOS Pt.3)
http://pc5.2ch.net/test/read.cgi/win/1062775949/
MS-DOS・Win3.1総合スレッド
http://pc5.2ch.net/test/read.cgi/win/1025462258/
2デフォルトの名無しさん:05/01/05 16:58:40
2
3デフォルトの名無しさん:05/01/05 17:11:36
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]

[[/S] [/C | /K] 文字列]

/C "文字列" に指定されたコマンドを実行した後、終了します。
/K "文字列" に指定されたコマンドを実行しますが、終了しません。
/S /C または /K の後の文字列の扱いを変更します (以下の説明を参照してくだ
さい)。
/Q エコーをオフにします。
/D レジストリからの AutoRun コマンドの実行を無効にします
(下記を参照してください)。
/A 内部コマンドの出力結果を ANSI でパイプまたはファイルに出力します。
/U 内部コマンドの出力結果を Unicode でパイプまたはファイルに出力します。
/T:fg 前景色および背景色を設定します (詳細は COLOR /? を参照してください)。
/E:ON コマンド拡張機能を有効にします (以下の説明を参照してください)。
/E:OFF コマンド拡張機能を無効にします (以下の説明を参照してください)。
/F:ON ファイル名およびディレクトリ名補完文字を有効にします
(以下の説明を参照してください)。
/F:OFF ファイルおよびディレクトリ名補完文字を無効にします
(以下の説明を参照してください)。
/V:ON 区切り文字として c を使って遅延環境変数の展開を有効にします。
たとえば、 /V:ON とすると、!var! は、実行時に変数 var を展開します。
var 構文は、FOR ループ中とは違い、入力時に変数を展開します。
/V:OFF 遅延環境展開を無効にします。
4デフォルトの名無しさん:05/01/05 17:12:05
コマンド セパレータ '&&' で区切られた複数のコマンドが引用符で囲まれている場合
は、"文字列" として指定されます。また互換性の理由から /X と /E:ON、/Y と
/E:OFF、および /R と /C は同じです。そのほかのスイッチは無視されます。

/C または /K が指定されている場合、スイッチの後の残りのコマンド ラインがコマ
ンド ラインとして処理されます。次のルールが引用符 (") の処理に使われます:

1. 次のすべての条件に一致する場合、コマンド ラインの引用符が有効になり
ます:

- /S スイッチがない
- 引用符が 1 組ある
- 引用符の中に特殊文字がない
(特殊文字は &<>()@^| です)
- 引用符の中に 1 つ以上のスペースがある
- 引用符の中の文字列が、実行可能ファイルの名前である

2. 最初の文字が引用符であるにも関わらず上の条件に一致しない場合は、最初
の引用符とコマンド ラインの最後の引用符が削除され、 最後の引用符のあ
とのテキストが有効になります。
5デフォルトの名無しさん:05/01/05 17:12:38
コマンド ラインで /D が指定されなかった場合は、CMD.EXE の開始時に次の REG_SZ
または REG_EXPAND_SZ レジストリ変数が検索されます。次のレジストリ変数の両方ま
たはどちらかが存在する場合、それらを最初に実行します。

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

既定では、コマンド拡張機能は有効です。拡張機能を無効にして CMD.EXE を起動する
には、/E:OFF スイッチを使用します。コンピュータまたはユーザー ログオン セッ
ションで起動される CMD.EXE コマンドすべてに対して拡張機能を有効または無効に
するには、 REGEDIT32.EXE を使ってレジストリにある次の REG_DWORD 値を設定しま
す。
コンピュータに対しては、

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions

に 0x1 を設定すると有効になり、0x0 を設定すると無効になります。
ログオン セッションに対しては、

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions

に 0x1 を設定すると有効になり、 0x0 を設定すると無効になります。
ユーザー固有の設定は、コンピュータの設定より優先されます。
コマンド ライン スイッチは、レジストリの設定より優先されます。
6デフォルトの名無しさん:05/01/05 17:13:10
コマンド拡張機能には、次のコマンドに対する変更または追加が含まれています。

DEL または ERASE
COLOR
CD または CHDIR
MD または MKDIR
PROMPT
PUSHD
POPD
SET
SETLOCAL
ENDLOCAL
IF
FOR
CALL
SHIFT
GOTO
START (外部コマンドの起動の変更を含みます)
ASSOC
FTYPE

詳細は、コマンド名の後に /? と入力すると表示されるヘルプを参照してください。
7デフォルトの名無しさん:05/01/05 17:13:41
既定では、遅延環境変数の展開は有効ではありません。遅延環境変数の展開を有効また
は無効にして CMD.EXE を起動するには、/V:ON または /V:OFF スイッチを使います。
コンピュータまたはログオン セッションで起動される CMD.EXE コマンドすべてに対し
て補完を有効または無効にするには、REGEDIT32.EXE を使ってレジストリにある次の
REG_DWORD 値を設定します。
コンピュータに対しては、

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion

に 0x1 を設定すると有効になり、0x0 を設定すると無効になります。
ユーザー ログオン セッションに対しては、

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion

に 0x1 を設定すると有効になり、0x0 を設定すると無効になります。
ユーザー固有の設定は、コンピュータの設定より優先されます。
コマンド ライン スイッチは、レジストリの設定より優先されます。

遅延環境変数の展開が有効になっている場合、感嘆符を使うと実行時に環境変数の
値を置き換えることができます。
8デフォルトの名無しさん:05/01/05 17:14:28
既定では、ファイルおよびディレクトリ名補完機能は有効ではありません。ファイル
名の補完機能を有効または無効にして CMD.EXE を起動するには、/F:ON または /F:OFF
スイッチを使います。コンピュータまたはログオン セッションで起動されるCMD.EXE
コマンドすべてに対して補完機能を有効または無効にするには、REGEDIT32.EXE を使っ
てレジストリにある次の REG_DWORD 値を設定します。
コンピュータに対しては、

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar

に特定の機能に使う 16 進の制御文字を設定します (例 0x4 は Ctrl-D、0x6 は
Ctrl-F)。
ユーザー ログオン セッションに対しては、

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar

に特定の機能に使う 16 進の制御文字を指定します (例: 0x4 は Ctrl-D、0x6 は
Ctrl-F)。
ユーザー固有の設定は、コンピュータの設定より優先されます。
コマンド ライン スイッチは、レジストリの設定より優先されます。
9デフォルトの名無しさん:05/01/05 17:14:53
/F:ON スイッチで補完機能を有効にした場合、2 つの制御文字 (Ctrl-D はディレクト
リ名補完機能、Ctrl-F はファイル名補完機能) が使用されます。
レジストリで特定の補完文字を無効にするには、制御文字として有効でないスペース
(0x20) の値を使用します。

2 つの制御文字のどちらかを入力すると、補完機能が起動されます。パスが存在しな
い場合、プログラムはカーソルの左側のパス文字列にワイルド カード文字を付加し、
一致するパスの一覧を作成します。その後一致する最初のパスを表示します。
パスが一致しない場合、音を鳴らします。同じ制御文字を押し続けると一致するパス
の一覧を順に表示します。Shift キーを押しながら制御文字を押すと一覧を逆回り表
示します。行を編集して制御文字をもう一度押すと、保存されていた一致したパスの
一覧は破棄され、新しい一覧が作成されます。ファイル名補完機能とディレクトリ名
補完機能を切り替えたときも同様です。2 つの制御文字の違いは、ディレクトリ補完
文字がディレクトリ名だけを照合するのに対し、ファイル名補完文字はファイルと
ディレクトリ名の両方を照合する点です。ファイル補完機能が内部ディレクトリコマ
ンド (CD、MD または RD) に使用された場合、ディレクトリ補完機能と見なされま
す。

一致するパスの前後に引用符を付けると、補完機能コードでスペースまたはほかの特
別な文字を含むファイル名が使用できるようになります。また、行の前に戻って補完
機能を起動した場合、補完機能が呼び出された時点でカーソルの右側にあったテキス
トは破棄されます。
10デフォルトの名無しさん:05/01/05 17:46:47
>>1
質問するときはWindowsのバージョンを教えてね
11デフォルトの名無しさん:05/01/05 23:19:53
12デフォルトの名無しさん:05/01/12 00:23:00
現在の日付をyyyy-mm-ddという書式で取得したいのですが
どのようにすればよろしいでしょうか?
環境変数%DATE%だと、yyyy/mm/ddという書式になってしまいます。
13デフォルトの名無しさん:05/01/12 00:43:29
>>12
set /?
14デフォルトの名無しさん:05/01/12 01:50:25
>>13
ありがとうございます。
%DATE:/=-%
で出来ました。
15301:05/01/13 12:28:35
毎日0:30に昨日分のログをメール送信するバッチを組んで使っています。

rem @echo off
set [email protected]
set today=%date:~0,4%%date:~5,2%%date:~8,2%
set /a today=%today%-1
set filename=\\server-1\share\log\todayslog\%today%.log

blatj %filename% -i -t %e-mail% -s %today%_todayslog

この方法ですとyyyymmdd形式に整形し、デクリメントしているだけなので、
月初や年始はどうしてもおかしくなります。
毎日23:30に日付をtoday.txtというファイルに格納する事を思いつきましたが、
逆にファイルから変数に入力する方法が分かりませんでした。
日付の概念で昨日を算出するか、ファイルから変数への入力方法を探しています。
16デフォルトの名無しさん:05/01/13 12:48:53
>>15
バッチファイルを生成して、そいつをcallしたら?
後で暇見て試してみるか。
17デフォルトの名無しさん:05/01/13 14:22:56
>>15
日付の概念で昨日を算出した方がスマートな気がするが、
まあ簡単なファイルを環境変数に代入する例として書いておくか。

for /F %%i in (today.txt) do echo %%i

これで、today.txtの内容が環境変数iに代入される。
正確にはtoday.txtの1行目がiに代入されechoされ、
次に2行目がiに代入されechoされ・・・と
全行に対してecho(doの後のコマンド)が実行される。

バッチファイルではなく、コマンドラインから実行するときは%%でなく%にすること
1817:05/01/13 14:27:44
>>15
ちょっと探してみたらあったので報告。

バッチで前日の日付を求める
http://homepage1.nifty.com/jak/batch/date.html
19デフォルトの名無しさん:05/01/13 15:40:46
質問させてください。

現在とある部屋にある数台のPCにpingを打ち、replyの帰ってきた端末にのみ
net sendでメッセージを送る事を考えています。

と言うのも最初からnet sendで全台にメッセージを送ると電源が入っていない
端末が途中にあると次の端末に送るまでに15秒ほど止まってしまうからです。
そこで「ping -n 1 -w 50 192.168.0.11」を全端末分作成するか「for /L %%f
in (11,1,45) do ping -n 1 -w 50 192.168.0.%%f」を実行してreplyのあった
ものだけにnet sendを実行したいのですが、方法が分かりません。

誰か分かる人がいれば教えて下さい。お願いします。
20デフォルトの名無しさん:05/01/13 19:22:24
>>19
こんなもんでヒントになるかな。

@echo off
set PING=NG
for /F %%i in ('ping 127.0.0.1') do if %%i==Reply set PING=OK
echo %PING%
21デフォルトの名無しさん:05/01/13 19:24:38
早く.NET時代の新シェルできないかな・・・
22デフォルトの名無しさん:05/01/13 19:39:53
>>11 のふたつめ

Command1 && Command2

&& 記号の前にあるコマンドが正常に終了した場合にのみ、この記号の後の
コマンドを実行するために使います。1 つ目のコマンドが実行され、そのコマン
ドが正常に終了した場合にのみ、2 つ目のコマンドが実行されます。
23デフォルトの名無しさん:05/01/13 19:50:44
pingで反応が無くてもエラーレベルは0なので&&は使えませんが何か?
24デフォルトの名無しさん:05/01/13 20:02:46
> ping 1.2.3.4 && echo succ || echo fail

Pinging 1.2.3.4 with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 1.2.3.4:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
fail
25デフォルトの名無しさん:05/01/13 20:09:10
>>23
うちのは 1 になっちゃうよ。
26デフォルトの名無しさん:05/01/13 20:10:03
おかしいなぁ。うちではこう表示されるけどなぁw

> ping 1.2.3.4 && echo succ || echo fail
Pinging 1.2.3.4 with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 1.2.3.4:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
succ
27デフォルトの名無しさん:05/01/13 20:17:33
>>24 = winXP
>>26 = win2K
28デフォルトの名無しさん:05/01/13 20:17:48
OSは?
>24はXPProSP2
2928:05/01/13 20:18:15
かぶった・・・
3019:05/01/13 21:38:58
何かちょっと見ない間にレスが!半分諦めかけてたので嬉しいです。
今は帰宅しているので明日にでも頂いたヒントを元に色々とやってみます。
有難うございます。

ただ>>20がイマイチ理解できない自分が情けないorz
('ping 127.0.0.1')にあて先のIPを入れるって理解で良いのでしょうか?
ヘボですみません
31301:05/01/14 11:49:46
>>15で質問したものです。

>>17
的確な回答有り難うございます。
FORは確かに使えますね。

>>18
ジャストミートな資料の提示、有り難うございます。
まさに求めていたものですが、
やはりというか日付の処理は全部記述していますね・・・。
DOS派なのでバッチなんですが、こういう時はwshに心動かされますね。

両方試行錯誤してみたいと思います。
形になったらまた報告しに来ますねー。
32301:05/01/14 13:55:42
>>15>>31です。

@echo off
rem :前処理
d:
cd \scripts

rem :送信先設定
set [email protected]

rem :日付取得&ログファイル名生成
set today=%DATE%
call yesterday.bat %today%
set filename=%yesterday%.log

rem :送信作業
smail -d -i -hsmtp.com -f"report <[email protected]>" -s%yesterday%_report -F%filename% %e-mail% > .\log\send_%yesterday%.log

>>17さんの意見を尊重し、概念で日付を取得する方を選び、こんな感じになりました。
ありがとうございました。
33デフォルトの名無しさん:05/01/16 14:04:01
xcopyでC:\hogeというディレクトリの中身を丸々コピーする際に
C:\hoge\fugaというディレクトリだけを除きたいのですが
どのようにすればよいでしょうか?


xcopyの/excludeでコピーしないファイルを指定することは
できますが、コピーしないディレクトリを指定することって
できますか?
34デフォルトの名無しさん:05/01/16 14:26:22
ファイルと同じようにディレクトリを指定すれば普通にできる。

つーか、どうやったらできなかったんだ?
35デフォルトの名無しさん:05/01/17 22:33:45
バッチファイルを右クリックして編集をクリックした時パスワードを要求するソフトありますか?
36デフォルトの名無しさん:05/01/17 22:37:44
NTFSの暗号化使え
3735:05/01/17 22:45:37
>>36
OSはXP
でも奴はフロッピーの中に入ってる。
つまりフロッピーの中のバッチファイルのソースを作業員に見せたくない。
38デフォルトの名無しさん:05/01/18 23:49:32
>>37
大量のコメントで迷彩掛けるとか。
さもなくば、アーカイバーの自己展開機能で実行させるとか。
39デフォルトの名無しさん:05/01/19 17:34:52
Winntでipアドレスを変更するバッチファイルを作りたいんだけど
Win2000のnetshみたいなのはありますか?
40デフォルトの名無しさん:05/01/21 04:41:49
タスクが有効か無効かを自動でチェックする仕組みってなんかありますか?
今は、手作業で
・デスクトップにつくってあるタスクフォルダショートカットをダブルクリック
・目視確認
なんすけど、自動化できるんじゃねーのかなーーと思って。
41デフォルトの名無しさん:05/01/21 13:42:25
ps -efW | find "Explorer" || Explorer
42デフォルトの名無しさん:05/01/21 22:37:48
echo A>test.txt
echo B>>test.txt
echo C>>test.txt

と書いたバッチファイルを運用して一ヶ月程したら
test.txtの中身が
A
C
B
C
となってしまいました。今までは正常に
A
B
C
となっていたのですが、原因としてありそうなことがありましたら教えて下さい。
43デフォルトの名無しさん:05/01/21 23:11:29
バッチを別プロセスで同時に走らせたらそうなるかもな
44デフォルトの名無しさん:05/01/21 23:29:15
>>43
なるほど。思い当たる節があるので調べてみます。
ありがとうございました。
45デフォルトの名無しさん:05/01/22 03:43:22
000.txt〜999.txtまで1000個のファイルを格納したフォルダをD&Dすると
ある実行ファイル(\hoge.exe)に対してファイルパスを引数として10個くらいづつ振り分けて与えるようなbatって可能ですか?
コマンドラインの文字数制限で1度のD&Dで1000個(実際は数百〜3000くらい)のファイルを処理するのは無理なので

\hoge.exe 000.txtのパス 001.txtのパス ・・・・・009.txtのパス
\hoge.exe 010.txtのパス 011.txtのパス ・・・・・019.txtのパス
 :
\hoge.exe 990.txtのパス 991.txtのパス ・・・・・999.txtのパス

といった感じで処理を振り分けたいのです。
今はファイルリストを作って、そこからテキスト置換でその都度batを作成していますが
非常に手間なので、どなたか解る方おりましたらご教授くださいませ。
フォルダをD&Dしたら中のファイルを対象に、複数ファイルをD&Dしたらそのファイルを対象に、という感じに出来れば更に幸せになれそうです。
46デフォルトの名無しさん:05/01/22 05:38:10
>>45
%1がフォルダかファイルかを判別して分岐
ファイルなら
\hoge.exe %*
フォルダなら
for /f "usebackq delims= skip=4" %%i IN (`dir/w/a-d %1 `) DO \hoge %%i

ファイル名にスペース等が含まれていないことが前提
最後2 行がエラーになる
渡せる引数の数はファイル名の文字数によって変わる
47デフォルトの名無しさん:05/01/22 05:43:27
>>40の件についてですが・・・

http://67.49.101.245/
のSchAgent.zipのTaskScheduler.dllを入れて、

Set taskA = CreateObject("Scheduler.SchAgent")
'task.TargetComputer = "\\server"
taskA.refresh

For Each tsk In taskA
  WScript.Echo tsk.Name, tsk.Status
Next

をかますことでできました。
でももっと簡単(というか、MS製ライブラリ)でできねーもんかね。
48デフォルトの名無しさん:05/01/22 06:05:31
フォルダD&Dでフォルダ内の全ファイル

@echo off
(%~d1) && (cd %1)
for %%f in (*) do echo %%f
pause

4945:05/01/22 06:38:10
>46
どうもです。
> ファイルなら
> \hoge.exe %*
これをやると「渡せる引数の数はファイル名の文字数によって変わる」という制限があるので
それを解消するのが目的です。


>48
どうもです。フォルダの場合はこれで完璧です。

ファイルの場合とフォルダの場合の条件分岐はなんとか自分で書くので
複数のファイルがD&Dされた場合も>48のように処理する方法が解る方、どうかアドバイスよろしくです。
5046:05/01/22 09:33:11
>>49
引数に複数のファイルを渡したいわけじゃないのか。

@echo off
if not exist "%~1" echo D^&Dしたファイルとフォルダ以下のファイル名を出力&pause>nul&goto :eof
:始
cd/d %1 2>nul
if ERRORLEVEL 1 goto ファイル else goto フォルダ
:フォルダ
for /r %%a in (*) do echo "%%~fa"
goto 終
:ファイル
echo "%~f1"
goto 終
:終
if exist "%~2" shift & goto 始
pause>nul
51デフォルトの名無しさん:05/01/22 10:14:11
>50
どうもです。
で、フォルダの場合はOKなんだけど、ファイルの場合がダメ。
でよく考えたらbatに大量のファイルをD&Dした時点でコマンド文字数オーバーしてるんだから
batの内部処理をどう振り分けようと無駄だということに気付いた。
10個程度のファイルをD&Dすれば正常に動作するので46氏の記述には全く問題は無いと思う。

1ファイル当たり半角英数20文字程度のパスを持つファイルを3000個くらい一気にD&Dするのは
やっぱり無理なんだろうな。フォルダ内の一部のファイルのみを処理する場合は
別フォルダに振り分けてからフォルダごとD&Dで対処するようにします。
46氏、48氏にはお手数をお掛けしました。フォルダの処理をする方は有効に活用させていただきます。
52デフォルトの名無しさん:05/01/22 17:44:45
CHOICEが見つかりません!
53デフォルトの名無しさん:05/01/22 19:48:32
cmdの見てくれに飽きた人へ
http://www.geocities.jp/cygwin_ck/
ck.exe -e cmd.exe
5442:05/01/23 23:09:24
どうもサーバーにリモートログインしているとサーバー側でのバッチと
リモート側でのバッチが同時に実行されるようです(確証はありませんが)。
あるプロセスが実行中は別プロセスが実行できないような方法ありませんか?
55デフォルトの名無しさん:05/01/24 06:44:21
XPのcmdがなぜか英語キーボード扱いになってしまってしまったのですがどうやって直せばいいんでしょうか?
cmd以外は普通に入力できているんですが。
56デフォルトの名無しさん:05/01/25 13:19:13
Win98で起動時にrouteを通すべく、スタートアップに拡張子batで保存したのですが、
実行時にショートカットが作られてしまうようで、2回動いてしまいます。
すっきり動かすにはどうすればよいのでしょう?
57デフォルトの名無しさん:05/01/25 15:08:21
>>56
バッチは他に置けば?
58デフォルトの名無しさん:05/01/26 00:05:36
ログを大量にUPするバッチをつくりたいのですが
3秒間隔とか時間差を行うときのバッチの処理がわかりません
どういう感じで処理するかこのあたりだけおしえてください
できれば、ソースをかいてくださいおねがいします
59デフォルトの名無しさん:05/01/26 20:12:49
sleep 3000
60デフォルトの名無しさん:05/01/28 03:37:46
これは既出?
BATCPをXPで使うとバッチファイルの内容によっては挙動がおかしかったけど、
これは問題なさそう。

Bat2Hide
http://homepage3.nifty.com/rcworks/bat2hide.htm
61デフォルトの名無しさん:05/01/28 06:10:46
バッチ・ファイル中で日付をファイル名に使用する
ttp://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html
62デフォルトの名無しさん:05/01/28 09:46:22
てか超ガイシュツじゃね?
63デフォルトの名無しさん:05/01/28 10:01:10
下記の様な簡単なbatファイルを作成したのですが、batファイルの置き場所によってうまく
動作したり、しなかったりしてしまいます。

for /L %%f in (11,1,50) do ping -n 1 -w 50 192.168.0.%%f

OSはXPです。c:\直下に配置すると大抵はうまく動作するのですが、他の場所では正常に動作
せずにループしているような状態に陥り、延々とこのコマンドが流れてしまいます。
また良く分からないのですがc:\直下でも正常動作せずに同じようにループに入ってしまう事
もあります。
何故なのか調べているのですが、分かりません。コマンドの書き方が悪いのでしょうか?

>>60のも試してみましたがダメでした。
64デフォルトの名無しさん:05/01/28 12:25:08
>>63
ping.bat ってオチは?
6564:05/01/28 14:46:11
>>63
恥ずかしながら同ディレクトリにping.batってのをおいてました。有難うございます。
66デフォルトの名無しさん:05/01/31 00:09:38
バッチで使えるお勧めの圧縮ソフト教えてよ
67デフォルトの名無しさん:05/01/31 00:13:29
>>66
diet
6866:05/01/31 00:34:42
Thanks.
69デフォルトの名無しさん:05/01/31 01:50:34
cabarc
70デフォルトの名無しさん:05/02/01 17:19:00
コマンドfooが呼び出し可能かどうかで分岐することって出来ますか?
実行して実行できなかったら、ではなく前もって知りたいんですが。
71デフォルトの名無しさん:05/02/01 17:29:16
パスにファイルが存在するかチェックなら可
72デフォルトの名無しさん:05/02/01 17:52:24
pathとpathextをばらしてwhich自作ですか・・・

%path%を ; で区切るのってどうやるんでしょう。
for /f "delims=;" %%q in (foo;bar bar;baz) do (
だとfooが見つかりませんというエラーになってしまいます。
7346:05/02/01 18:36:55
http://www.vector.co.jp/soft/win95/util/se302883.html
のWhich.CMDを参考にするといいかも
74デフォルトの名無しさん:05/02/04 22:14:36
バッチからJavaプログラムを起動し、
戻ってきたERRORLEVELの値をechoで表示させています。
(正常なら0、異常なら-1が戻る)
普段は普通に0や-1が表示されるのですが、
たまにプログラムが突然終了して、
ERRORLEVELに「143」というわけのわからない値が入ってくるので困ってます。

%ERRORLEVEL%の値からエラー内容を知ることはできますか?
(もしスレ違いなら適切なスレへ誘導していただけると嬉しいです)
75デフォルトの名無しさん:05/02/04 22:22:22
>>74
それはそのJavaのプログラムのソース次第だろ。
ソースを143で検索するかそのプログラムリリースしたところに聞くしか。
76デフォルトの名無しさん:05/02/05 03:01:33
誰かバッチファイルで面白いアドベンチャーとか作れよ。
77デフォルトの名無しさん:05/02/05 03:38:59
中身が丸見えじゃないか
7874:05/02/05 09:40:14
>>75
ソース次第ですか。ありがとうございました。
79デフォルトの名無しさん:05/02/05 21:38:51
>>76-77
なんかワラタw
80デフォルトの名無しさん:05/02/08 11:44:41
あるbatファイルをatコマンドを利用して定期的に稼動させています。
定期的とは例えば毎週月曜日の12:00,火曜日の11:00などです。
しかしこれらの指定する時間が多々変更しなければならない事があり、
その度にタスクを変更するのが面倒と言うか全然PCの分からない人に
でも変更可能なようにしたいと考えています。

で、csvなどでスケジュールを指定して表を読み込ませて、その時間に
batファイルを動かせるようにしたいのですが、良い方法ってあるでしょ
うか?別の方法でも良いのですが、視覚的に分かりやすいものを、と
考えています。

何か漠然とした質問ですみません
ヒントだけでもいただけると助かります。
81デフォルトの名無しさん:05/02/08 12:30:30
cron使え
82デフォルトの名無しさん:05/02/08 12:35:48
>>80
Windows標準のタスク機能を使えばいい
83デフォルトの名無しさん:05/02/08 12:50:54
>>80
for /f "delims=, tokens=1,2,3,4,〜" %a in (〜.csv) do at 〜 %a 〜 %b 〜
8480:05/02/08 13:52:56
皆さまレス有難うございます

>>81
cronってWindowsにもありましたっけ?

>>82
タスクを手で作り変えるには量が多くてミスの可能性が高そうなので他の方法で考えています。

>>83
何か使った事のないコマンドがあるので良く分からないのですが、調べて検討します。
有難うございます。
8580:05/02/08 15:36:31
連続投稿すみません。
教えて頂いたのを元に下記のようなbatを作ってみましたがうまく動作しません。

for /f "delims=, tokens=1,2,3," %%a in (test.csv)
do if %%a==○ && at 11:25 /next:m "C:\aaa.bat"
if %%b==○ && at 11:27 /next:m "C:\bbb.bat"
if %%c==○ && at 11:29 /next:m "C:\ccc.bat"

test.csvの中身は下記のようなものです。
○,○,○,
,○,○,
○,,○,

使い方が間違っているのでしょうか?

最終的なイメージとしては下記を考えています。
,1,2,3,4,5,6,7,8,
月,○,○,○,○,○,○,○,○,
火,○,○,,○,,○,,○,
水,,,,○,,○,○,,
木,○,,,,,,,○,
金,,○,,○,○,,,○,

○のある箇所のみatコマンドを入力したく思っています。
これって可能でしょうか?それともバッチファイルでは難しいのでしょうか?
長々と書いてすみませんがヒント頂けないでしょうか?お願いします。
86デフォルトの名無しさん:05/02/08 16:04:27
for /f "delims=, tokens=1,2,3,4,5,6,7,8,9" %%i in (test.csv) do (
echo %%i, %%j,%%k, %%l, %%m, %%n, %%o, %%p, %%q
)
8780:05/02/08 16:24:55
私の書き方がまずかったみたいですね。すみません。
○のついた曜日の時間のみにatコマンドでbatをタスクスケジューラーに入れた
いと思っているのです。
echoで表示させる事はできるのですが、%%a等に○が入った時に、他のbatを呼び出して
それぞれのコマンドを実行させる事ができないのです。
また空白の箇所(○が入っていない)箇所は無視されて左にシフトされてしまう事
にも悩んでいます。例えば「,,,,,○,○」のcsvファイルを読み込ませると
○○が左詰になってしまいます。
分かりにくい文章ですみませんがお願いします。
88デフォルトの名無しさん:05/02/09 00:59:22
86です。私も読解力不足でした。
■お悩み1
>%%a等に○が入った時に、他のbatを呼び出してそれぞれのコマンドを実行させる事ができない
これは「&&」が不要です。
 if %%a == ○ at 11:25 /next:m "C:\aaa.bat"
だとうまくATコマンドが実行されます。
■お悩み2
>空白の箇所(○が入っていない)箇所は無視されて左にシフトされてしまう
う〜ん。これは以下のようにカンマの間にスペースなどを入れて逃げるしかないような。
89デフォルトの名無しさん:05/02/09 01:02:03
続き
test.csvの内容
-------------------------
,1,2,3,4,5,6,7,8
月, , , ,○, ,○, ,○
火,○, ,○, ,○, ,○, 
水, ,○, ,○, ,○, ,○
木,○, ,○, ,○, ,○, 
金, ,○, ,○, ,○, ,○
土,○, ,○, ,○, ,○, 
日, ,○, ,○, ,○, ,○
-------------------------

ご参考程度にバッチのコードも載せておきますね。

@echo off

for /f "delims=, tokens=2-9" %%a in (test.csv) do (
if %%a == ○ at 11:25 /next:m "C:\aaa.bat"
if %%b == ○ at 11:27 /next:m "C:\bbb.bat"
if %%c == ○ at 11:29 /next:m "C:\ccc.bat"
if %%d == ○ at 11:31 /next:m "C:\ddd.bat"
if %%e == ○ at 11:33 /next:m "C:\eee.bat"
if %%f == ○ at 11:35 /next:m "C:\fff.bat"
if %%g == ○ at 11:37 /next:m "C:\ggg.bat"
if %%h == ○ at 11:39 /next:m "C:\hhh.bat"
)
9080:05/02/09 09:17:15
>>86==>>88-89
レス有難うございます。早速確認してみます。感謝です
91デフォルトの名無しさん:05/02/10 01:22:21
zshでいう
mkdir data{0000..0020}
のようなことをしたいのですが
for /L %i in (1,1,20) do set num=000%i & mkdir data%num:~-4%
ではnumが最初に読み込まれるだけで以降更新してくれません

なんかいい方法ないですか?
92デフォルトの名無しさん:05/02/10 01:35:29
>>91
>>7
setlocal
93デフォルトの名無しさん:05/02/10 04:50:19
こんな感じかな。
-------------------------------
@echo off
setlocal enabledelayedexpansion
for /L %%i in (1,1,20) do (
 set num=000%%i
 mkdir data!num:~-4!
)
endlocal
-------------------------------
94デフォルトの名無しさん:05/02/11 22:54:24
>>92,93
多謝
まだまだ無知であることを痛感しました
95デフォルトの名無しさん:05/02/12 00:22:58
バッチで取得した値を、クリップボードに格納するにはどうすればいいのですか?
不可能ではないらしいのですが、ググってもさっぱりわかりません。
博識なお方、例として%date%をそのままクリップボードに送る方法の解説をお願いします。
96デフォルトの名無しさん:05/02/12 00:31:10
たぶん無理。wshで無理やりIEコンポ使ったやり方はあるけど。
お前ら、wsh使ってますか? Part4
http://pc5.2ch.net/test/read.cgi/win/1100489339/295

cygwinなら > /dev/clipboardでできたりする。
97デフォルトの名無しさん:05/02/12 00:43:11
98デフォルトの名無しさん:05/02/13 19:24:47
階層がぐちゃぐちゃなフォルダがたくさんあるので、ファイル整理をしています。

全部のフォルダを1階層(フォルダの中にフォルダがない状態)にするための
バッチを作っています。

C:\新しいフォルダ\新しいフォルダ\A.A , B.B...
C:\新しいフォルダ\A.A , B.B...
※フォルダ名に一貫性はありません。

move *.* ../ で2階層目のフォルダの中身を上に送れますが、送った後、
空になったゴミフォルダ C:\新しいフォルダ\新しいフォルダ\
を自動的に削除するにはどうしたらいいでしょうか?

RDはワイルドカードが効かないので、ゴミフォルダだけ消せません。
99デフォルトの名無しさん:05/02/13 19:44:45
>>98
消したいディレクトリを全て適当なディレクトリに移動して、そのディレクトリを階層ごと削除すればいいかと。
xcopy /e *.* foo
rmdir /s foo
って感じかな?
#手元に環境がないので適当に調べてくれ。
100デフォルトの名無しさん:05/02/13 19:55:06
`dir /b`を取り込んで出力が0行なら空
101デフォルトの名無しさん:05/02/13 20:08:59
>>100 こうですか?
for /F %e in ('dir /b') do rmdir %e /s /q
10299:05/02/13 20:42:50
役に立たなかったらしい。んじゃあとはしらね。
103デフォルトの名無しさん:05/02/13 21:18:28
>>102 なんとかやってみます。 ありがとう
104デフォルトの名無しさん:05/02/13 22:33:42
for /f "usebackq delims=" %%f in (`dir /b test`) do goto notempty
echo empty!
:notempty
105デフォルトの名無しさん:05/02/14 11:18:34
sambaの共有フォルダにアクセスして自動的にファイルを取得するバッチを作ろうと思ってるんですが
パスワードが設定されているので毎回手入力しないといけません。入力せずに自動的にID,PASSを入れ
る事のできる方法ってありますか?
106デフォルトの名無しさん:05/02/14 12:59:09
>>105
net use
107デフォルトの名無しさん:05/02/14 18:57:06
>>106

たとえば共有したい場所を\\192.168.0.2のtempフォルダだととしたら

net use Q: \\192.168.0.2\temp

とするとパスワードを求められますが、ここの入力も自動化したいのです。
108デフォルトの名無しさん:05/02/14 19:46:44
>>107
net use
109デフォルトの名無しさん:05/02/14 20:28:46
>>107
ヘルプを見れ
110デフォルトの名無しさん:05/02/17 14:25:13
単発で実行するとき窓開かないようには出来ないの?
111デフォルトの名無しさん:05/02/17 14:54:15
>>110
バッチファイルのプロパティで「実行時の大きさ」を「最小化」にする。
112デフォルトの名無しさん:05/02/17 14:57:32
最小化だとタスクバーにでちゃうから
とにかく窓作らないようには出来ないの?
113デフォルトの名無しさん:05/02/17 15:09:47
>>112
cmd.exeを単独で使う限り、無理。
114デフォルトの名無しさん:05/02/18 00:23:45
cmd.exe使いにくいんですが、それに代わるソフトってないんでしょうか?
115デフォルトの名無しさん:05/02/18 00:31:15
cygwin&ck
116デフォルトの名無しさん:05/02/18 08:58:28
>>114
nyacus
117114:05/02/18 21:27:48
>>115
ダウンロードしようと思ったら40Mもあったのでやめました。

>>116
cmd.exeとの違いがよくわかりません。

cmd.exeは任意のフォントが使えないのと、ウィンドウサイズ変えるのが
面倒なのと、自動保管が糞なのと・・・・
DOSやめます。
118デフォルトの名無しさん:05/02/18 21:45:09
プログラミングと関係ないDOSの話なら >>1
119デフォルトの名無しさん:05/02/18 21:47:02
バッチファイルをプログラミングと呼ぶのはなんとなく気恥ずかしい
120デフォルトの名無しさん:05/02/18 23:34:14
Windows XPなんですが、バッチファイルを実行したらDOS窓は自動的に
閉じますよね。
これを閉じないようにしたいんですけどどうやるんですか?
121デフォルトの名無しさん:05/02/18 23:59:29
>>120
バッチの実行結果を確認したいなどの目的で一時的に残したいだけなら、
バッチの最後にpauseコマンドでも入れておくべし。
122デフォルトの名無しさん:05/02/19 00:09:36
>>121
ありがとう。やってみた。でもやっぱ
C:\Documents and Settings\XXXXX\デスクトップ>
↑こんな感じの状態で止まるようにはできませんよね?
123デフォルトの名無しさん:05/02/19 00:11:09
cmd /k yourbatch.bat出起動しろ
124120&122:05/02/19 00:20:52
あっ、
最後にバッチの中の最後に
cmdという文字列を入れればできることに気がつきました!
ありがとうございました。
125デフォルトの名無しさん:05/02/20 23:11:10
複数の(10くらい)ファイルをドラッグアンドドロップすると、あらかじめ指定したフォルダへ全て無条件でコピーしてくれるバッチファイルを作りたいのですが、教えていただけませんか?

よろしくお願いいたします。
126デフォルトの名無しさん:05/02/20 23:13:48
SendToにそのフォルダのショートカット置くとかじゃ駄目?

:loop
if "%1"=="" goto :exit
copy "%~1" c:\dest
shift
goto :loop
:exit
127デフォルトの名無しさん:05/02/20 23:38:15
>>126
ありがとうございます。

@echo off
:loop
if %1=="" goto :exit
copy %1 c:\dest
shift
goto :loop
:exit

でできました。XPなんですが、" のあるなしって何か関係あるのでしょうか?
128デフォルトの名無しさん:05/02/21 01:33:17
きりばんげとずさー
>>127
マイドキュメントからコピーするときにちょっと幸せになれるかも
129デフォルトの名無しさん:05/02/21 03:01:53
当方WinXPで、
コマンドプロンプトを起動するたびに

cd デスクトップ

と打つんですが、
これを短縮して起動させるバッチファイルとか可能ですか?
もしくはデフォルトのディレクトリをデスクトップにすることはできませんか?
130デフォルトの名無しさん:05/02/21 03:05:01
cmd /k cd デスクトップ
131130:05/02/21 10:18:15
>>130
cmd cd デスクトップ

で行けました。
ありがとうございます。
132デフォルトの名無しさん:05/02/21 10:18:52
あ・・・名前ミスったw
133デフォルトの名無しさん:05/02/21 21:01:47
「a」というフォルダがあって、その中に「a1」,「a2]...「a10」の10個のサブフォルダがあったとします。
その10個のサブフォルダのそれぞれに「b」というフォルダがあったとします。
カレントディレクトリが「a」として、ここから「b」のフォルダとその中身を全部削除するには
どうコマンドをかけばよいですか?
なるべく1行で。
*?を使ってできるのかな?
134デフォルトの名無しさん:05/02/21 21:29:15
>>133
for /d %%a in (a\a??) do @echo rd/s/q %%a\b
135デフォルトの名無しさん:05/02/22 01:28:36
バッチファイルでアクセスカウンターは作れますか?
136デフォルトの名無しさん:05/02/22 03:06:19
137217:05/02/22 22:27:23
いろいろやって、やっとできました。
このバッチあると、階層が深いフォルダ( フォルダの中にフォルダがある)の中のファイルを
「フォルダの中のファイルをすべて選択 - ファイルを切り取り - 一段あがって貼り付け - 中間フォルダを削除」
の面倒なファイル操作しなくていいんですごい楽です。

A\B\aa.a bb.b cc.c → A\aa.a bb.b cc.c の作業がすごい簡単です。

for /f "usebackq delims=" %%f in (`dir /b /ad`) do set a=%%f
cd %a%
move *.* ../
cd ..
rmdir /s /q "%a%"
138デフォルトの名無しさん:05/02/25 03:35:47
>>136
これってどうやってるの?
流れとしては、
1.カウンターをファイルから読み込む
2.カウンターに1を足す
3.カウンターをファイルに書き込む
4.カウンターを表示する
のはずだけど。
バッチファイルでやろうとすると1の段階で詰まる。
ファイルの内容を”変数”に読み込まないと2以降の作業ができないんだけど、バッチじゃ無理っぽい。
何か特別な方法でもあるの?
139デフォルトの名無しさん:05/02/25 03:41:38
AddHandler cgi-script .bat
140デフォルトの名無しさん:05/02/25 03:46:05
>>139
そういうこと聞いてるんじゃないんだけど。
バッチにファイルの内容を変数に読み込む命令なんてあるの?
もし無いならどうやってるの?

そういう質問。
141デフォルトの名無しさん:05/02/25 04:27:14
>>140
for /?

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

この例は、myfile.txt の各行を解析します。セミコロンで始まる行を無視し、
各行の 2 番目と 3 番目のトークンを for 本体に渡します。トークンは、カンマ
またはスペースで区切られています。for 本体の文が %i で 2 番目のトークン
を、%j で 3 番目のトークンを取得し、%k で 3 番目移行のすべてのトークンを
取得していることに注意してください。スペースを含むファイル名に対しては、
142デフォルトの名無しさん:05/02/26 13:08:22
>>140
ひょっとしてWin9x?
だったらFOR文で/Fオプション使えないよな。
143デフォルトの名無しさん:05/02/26 21:46:46
まあ9x系でもファイルの内容を環境変数に
読み込むことは出来ると思うが。
たとえばこんな感じでできるはず。

・バッチファイル
@echo off
type data.dat > temp.bat
call temp.bat
echo %test%

・data.datの中身
set test=abc
144デフォルトの名無しさん:05/02/26 21:49:35
9xでCGIなんてありえない
145デフォルトの名無しさん:05/02/26 21:51:14
data.datの頭ににset test=ってつけられないのならこんな感じだな。

・バッチファイル
@echo off
copy work.dat+data.dat temp.bat
call temp.bat
echo %test%

・work.datの中身
set test=

・data.datの中身
abc
146デフォルトの名無しさん:05/02/26 22:04:11
出力を実行するという荒業もアル

@echo off
echo set data=%%2 > ボリューム.bat
vol > temp.bat
call temp.bat
147デフォルトの名無しさん:05/03/04 03:38:29
スレ違いかもしれんが、文字置換コマンドを実行するのに
Win32 Perlをインストしてあればコマンドから

>perl -i.bak -pe "s/大/小/" aa.txt
(aa.txt内の"大"の文字を"小"に変更する)
ができる。結構便利。 また、UNIXのコマンドをコマンドラインから使う方法もある。
NT版UNIX-like tools <<<<主要なUNIXコマンドのWinへの移植 UNIXのほぼ全てのコマンドが使える

バッチでできるなら、それに越したことがないけど。
148デフォルトの名無しさん:05/03/04 10:55:23
>>147
それ言い出すと、素直にcygwinをインストールしてbash使えばいいって結論になってまうがね。
149デフォルトの名無しさん:05/03/04 23:43:52
バッチファイルに "abc def.zip"などというスペースを含む
ファイルの渡し方を教えてください。

foo.bat "abc defzip"

ではエラーになります。
150149:05/03/05 11:37:01
内容がないようでした。

@echo off
set FileName=%1
echo %FileName:~-4%
if /i "%1:~-4%"==".zip" (echo Ok ) else (
echo No)

こんなバッチファイルでエラーになります。
何が悪いのでしょう?
151デフォルトの名無しさん:05/03/05 12:10:53
%1に入ってるファイル名の拡張子は %~x1 で取り出せる
152デフォルトの名無しさん:05/03/05 12:16:03
>>150
call /?
153149:05/03/05 20:43:54
ありがとうございました。
無事解決しました。
154デフォルトの名無しさん:05/03/09 02:58:28
複数の端末からNETUSEを使用して
IPアドレス一覧を上から順に接続していきデータを取得、切断し次の端末に接続を繰り返すバッチ。
しかしその端末とのPINGがNGな状態だと動作がとまってしまいます。
それを回避したいのですが・・
 1接続不可の場合にすぐに次の端末に接続を試みる方法
 2または先にIPアドレス一覧リストを元に、PINGを実行してOKなリストの作成をするにはどう書けばいいのでしょうか?
155デフォルトの名無しさん:05/03/09 09:48:13
初心者〜管理者まで必読!コマンドライン(DOS Pt.3)
http://pc5.2ch.net/test/read.cgi/win/1062775949/

運用系の話はこっちの方がいいと思うんだが
156デフォルトの名無しさん:05/03/09 12:24:06
>>154
下記みたいな感じじゃダメかな?テストしてないから分からんけど

set PING=NG
for /F %%i in ('ping -n 1 -w 50 IPアドレス') do if %%i==Reply set PING=OK && net use x ....
157デフォルトの名無しさん:05/03/10 11:04:15
WIN Xpで再起動のバッチはどうすればできますか?
@exitじゃだめなんですよね・・
158デフォルトの名無しさん:05/03/10 11:30:30
shutdown -r
159デフォルトの名無しさん:05/03/10 20:28:12
suttamonnda -r
160デフォルトの名無しさん:05/03/10 22:45:56
基本なんでしょうけど
音を鳴らしたいのですが
・でなるようなのですが
どう書いたらいいのですか?
161デフォルトの名無しさん:05/03/10 23:06:19
>>160
まず日本語を勉強しなおせ。
話はそれからだ。
162デフォルトの名無しさん:05/03/12 00:00:59
>>160
その・は、おそらく\a(0x07)のBelのつもりだと思う。
コマンドプロンプトで
echo Ctrl+G
と打ってみ。(表示はecho ^Gになる)
163デフォルトの名無しさん:05/03/12 00:32:18
某所でバッチでタイマーを使う方法として

@echo off
echo 5秒後に実行します
ehoice /c:1 /t:1,05>NUL
echo 実行開始

というものが紹介されていたのですが、
> 'choice' は、内部コマンドまたは外部コマンド、
> 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
となってしまいます。
WindowsXP Pro SP1aなのですが、どうすれば使えるようになりますか?
164デフォルトの名無しさん:05/03/12 00:35:02
>>163
Windows2003を買う
165163:05/03/12 00:53:44
>>164
時期的に2003発売前に書かれたものなので、
2003でしか使えないということは無いと思うのですが。
166デフォルトの名無しさん:05/03/12 01:05:29
>>165
MS-DOS6.2を買う
167デフォルトの名無しさん:05/03/12 01:25:45
168デフォルトの名無しさん:05/03/13 15:59:58
169デフォルトの名無しさん:05/03/13 16:15:08
おいおい、、、w
170デフォルトの名無しさん:05/03/13 23:18:09
すみません、初歩的な事なのですが教えて下さい。
ローカルフォルダをドライブにマウントするのに
"net use e: \\127.0.0.1\winxp\bin"
このようなコマンドを入力すると

「システムエラー 58が発生しました
ネットワークパスが見つかりません」

と、マウント出来ないのです。
OSはXP-SP1 です。

171170:05/03/13 23:19:22
システムエラー 53でした
172デフォルトの名無しさん:05/03/14 00:06:34
>>170
エクスプローラで「\\127.0.0.1\winxp\bin」が開けるかどうか確認してみれ。

ttp://www.microsoft.com/resources/documentation/WindowsServ/2003/enterprise/proddocs/ja-jp/Default.asp?url=/resources/documentation/WindowsServ/2003/enterprise/proddocs/ja-jp/sag_TCPIP_tro_Topnode.asp
システム エラー 53 が発生しました。

原因 ;  システム エラー 53 は、net use コマンドを使ったコンピュータ名の名前解決に
失敗した場合に返されます。

解決方法 ;  目的のコンピュータがローカル サブネット上にある場合は、その名前の綴り
が正しいこと、および目的のコンピュータ上でも TCP/IP が実行されていることを確認します。
173デフォルトの名無しさん:05/03/14 00:25:16
>>170
"net use e: \\127.0.0.1\winxp\bin"
bin ってサブフォルダは無理だろ
net use e: \\127.0.0.1\winxp
ぐらいにしとけ。
174170:05/03/14 00:33:34
素直に接続できるマシンは、ルートでもサブディレクトリでも無条件でマウント出来ます。
簡単に接続出来たので、別のマシンで設定すると、うまくマウント出来ないのです。
net use (return) で出てくる共有先はつながるのですが、なぜかおかしいのです。
175デフォルトの名無しさん:05/03/14 01:00:15
>>170
net view \\127.0.0.1
で「winxp」が共有リソース(Disk)になってることを確認した?
176170:05/03/14 01:15:43
>>175
はい、その辺は思い当たる所は確認しています。
net use で「OK」が出ている所だけしか接続出来ないようなのです
177170:05/03/14 01:22:19
あ、今再度良く見たら「使用」の項目には、どの共有先も何も記載されていません
178デフォルトの名無しさん:05/03/14 02:28:47
>>170
net use e: \\%COMPUTERNAME%\winxp\bin
でも繋がらなかったら、原因になりそうなのは
・共有名「winxp」フォルダの共有設定がおかしい
・「winxp」フォルダの中に「bin」フォルダがない
くらいしか思い浮かばないが。
179デフォルトの名無しさん:05/03/14 06:19:37
どのへんがプログラミング?
180デフォルトの名無しさん:05/03/14 07:50:15
(^□^)ギャハハハハハハハハハ!!
binが共有名ならその上のフォルダ名winxpは要らんのじゃよ
よって正解は

net use e: \\ホスト名\bin じゃな。
181170:05/03/14 09:51:40
>>180
binは共有していません。
c:\bin にあるわけで、\\PC\winxp\bin なんです。
仮に、binを共有して、\\PC\bin としても、同じくエラーでマウント出来ないのです。
現在、全く問題無いPCで色々試しているのですが、同じ現象が出るのはLANコードを抜いたり
LANカードを無効にした時に発生しています。
182デフォルトの名無しさん:05/03/14 10:07:36
>>181
説明が下手だなぁ。
>LANコードを抜いたりLANカードを無効にした時に発生しています。
これは、「抜いたり向こうにした後再度接続しても」という意味でいいのかな?
そうでない、文字通り接続できない状況ならそりぁあマウントできねぇべ。
183デフォルトの名無しさん:05/03/14 16:18:56
WinXPで、DOS窓を一切表示させずにbatを実行するにはどうしればいいですか?
ショートカットを作って実行サイズを最小化したりSmartProcessorを使ったりして
最小化状態で実行させることは出来るのですが、タスクバーにも表示されないようにする方法が解りません。
184デフォルトの名無しさん:05/03/14 16:21:00
CreateProcessしろ
185デフォルトの名無しさん:05/03/15 00:28:13
>>183
うち(WinXP)では
nircmd exec hide "hoge.bat"
で、できるけど。どうかな?

nircmd.exe
ttp://www.nirsoft.net/utils/index.html
186デフォルトの名無しさん:05/03/15 00:45:59
>>183
タスクでバッチを走らせるんなら、別ユーザーで実行すれば全く見えなくなるのでわ?
187デフォルトの名無しさん:05/03/15 01:09:53
>>186
それはどうかな?

俺の予想では別のPCで実行すればまったく見えなくなりそうな気がする。
188186:05/03/15 07:45:06
>>187
それはどうかな?ってw

やってみてから言ってくれよな( ´,_ゝ`)プッ
189デフォルトの名無しさん:05/03/15 10:03:26
>>188
オマエモナー
190186:05/03/15 20:52:54
だいたい別のPCからバッチを走らせるなんて、メンドクサイ事この上ないだろ。
接続性の問題とか、常時電源ONにしなくちゃいけない別PCが必要だとか
ネットワーク越しではうまく動作しないとか。

で、やってみたのかい?
ユーザーをバッチ用に作って、タスクを実行するユーザーにそのユーザーを指定して
やれば、バックグラウンドでジョブが走ってくれるだろ。
これが一番簡単な方法だと思うがね( ´,_ゝ`)プッ
191デフォルトの名無しさん:05/03/15 21:09:43
>>190
まじれす乙

vbsならこんなんでできる。
CreateObject("WScript.Shell").Run "unko.bat", 0
192186:05/03/15 21:18:10
>>191
そっちの方が簡単そうだ
見直したぜ、おまえ( ´,_ゝ`)プッ
193デフォルトの名無しさん:05/03/15 21:46:25
あんまりこう言うの→( ´,_ゝ`)プッを多用すると必死に見えるから
控えた方が良いよ
194186:05/03/15 21:49:35
( ´,_ゝ`)プッ わかったぜ( ´,_ゝ`)プッ
195デフォルトの名無しさん:05/03/15 21:56:25
じゃあ、必死で回答を求めてる時はレス容量が許す限り
( ´,_ゝ`)プッで埋め尽くせば、必死さが伝わる訳か。
こんど、急ぎで回答が欲しい場合などに使ってみよう。
196デフォルトの名無しさん:05/03/15 23:01:23
ツマラン流れだな
197デフォルトの名無しさん:05/03/15 23:14:31
( ´,_ゝ`)ウン
198デフォルトの名無しさん:05/03/15 23:21:54
>>197
( ´,_ゝ`)プッ
199デフォルトの名無しさん:05/03/15 23:27:24
     ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ

プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)

     ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ

プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)

     ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ

プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)

     ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ

プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)

     ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ

プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)
200デフォルトの名無しさん:05/03/16 01:05:13
>>186
本気でキモイからそろそろやめてください。
お願いだからここを荒らすのはやめてください。本当にお願いします。
201186:05/03/16 07:36:43
>>197-199
おまえらやめれってさ。
202デフォルトの名無しさん:05/03/16 10:13:51
>>186
もういいよ
203デフォルトの名無しさん:2005/03/21(月) 18:32:18
c:\1\2\3\hoge.bat
を実行した場合、パラメータで
%~d0 c:
%~p0 \1\2\3\
%~n0 hoge
%~x0 .bat
という値を取得できますが、
\1\2\ と 3\ を取得するにはどうすれば良いでしょうか?
ぶっちゃけカレントフォルダをバッチにD&Dして%~p1と%~n1を使えばいいんですが、
一々その操作をするのが煩わしいので、解る方教えてください。
フォルダ名やファイル名は可変です。
204デフォルトの名無しさん:2005/03/21(月) 23:53:21
>>203 具体的に何がしたいのか書けよ
for %%a in (%~f0\..) do @echo %%~pa と %%~na\ を取得
205デフォルトの名無しさん:2005/03/25(金) 19:49:15
バッチファイルで環境変数のスペースを%20に置き換えたい。
set foo=%foo: =.%
だとスペースがピリオドに置き換えられる。しかし、
set foo=%foo: =%20%
にすると%20にならず最初の%で切られる。
なにかいい方法無い?
206デフォルトの名無しさん:2005/03/26(土) 04:31:37
^%
207デフォルトの名無しさん:2005/03/28(月) 09:09:20
For %%a in (set) do
For文で、この(set)の部分の質問なんですが
・ファイルのみ(拡張子無しも含む)
・フォルダのみ
・特定拡張子以外
を対象に指定するにはどうすれば良いのでしょうか?
拡張子のあるファイルや特定拡張子のファイルを指定する方法は解ったのですが。
208207:2005/03/28(月) 13:54:43
一つ自己解決
・ファイルのみ(拡張子無しも含む)
は(*)でいいんですね。

ってことで
・フォルダのみ
・特定拡張子以外
をお願いします。
209デフォルトの名無しさん:2005/03/28(月) 13:57:00
>>206
それでは出来ない。
210207:2005/03/28(月) 14:23:51
>>205>>209
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set foo=あ い う え お
set hoge=%%20
set foo=%foo: =!hoge!%
echo %foo%
pause

こんなのはいかかですか?
こちらの環境では「%foo% = あ%20い%20う%20え%20お」となりましたが。
211207:2005/03/31(木) 22:32:43

>>207をよろしくです
212デフォルトの名無しさん:皇紀2665/04/01(金) 00:17:37
>>207
2k/xpなら

フォルダのみ
for /d %%a in (*) do echo %%a

特定拡張子以外
for %%a in (*) do if /i not .特定==%%~xa echo %%a
213:2005/04/06(水) 19:28:22
ここに質問していいかどうかわかりませんが
お教え願えれば幸いです。

ちょっとしたファイルコピー用のバッチファイルを作ってみたのですが
windows2000とXP上でしか動作せず困ってます。内容はいたって簡単で、
CドライブのフォルダをDドライブにコピーし、
コピーが成功した場合と失敗した場合で表示を変える仕組みです。
現在2000で動いているバッチは以下です。
一応ちゃんと動いていますが、手探りで調べて作成したので
無駄があるかもしれません。

@echo off
xcopy /e /y /i "C:\a" "D:\a"||echo □■コピー失敗!!■□&&pause&&exit
echo □■コピー完了!!■□
pause
exit

成功時:
コピー完了!と表示され、何かキーを押すとコマンド画面が閉じる。

失敗時:
コピー失敗!と表示され、ビープ音が数回鳴り、何かキーを押すとコマンド画面が閉じる。

これを2000系統と98系統両方で使えるような記述に
直したものを教えて頂けませんか?
両方兼用でというのはムリであれば
98系統で動くものを教えて下さい。

すいませんがよろしくお願いします。
214デフォルトの名無しさん:2005/04/06(水) 19:41:14
98系統だと||や&&が使えないんじゃないかな。
if errorlevelで分岐するしかないかと。
それは2K以降でも使える筈。
215デフォルトの名無しさん:2005/04/06(水) 19:41:48
@echo off
xcopy /e /y /i "C:\a" "D:\a"
if errorlevel 1 goto err
echo □■コピー完了!!■□
goto end
:err
echo □■コピー失敗!!■□
:end
pause
exit

これでいいんじゃない?
xcopyのスイッチに関しては調べてないので合っている前提で。
ていうか単発質問スレたてるなアフォが。
216:2005/04/06(水) 19:58:59
早速の回答ありがとうございます!
とりあえず2000では出来ました!
明日98マシンで試してみます。

>単発質問スレ

すいません^^;;;
217:2005/04/07(木) 10:20:59
win98でも出来ました!ありがとうございました!
またわからなくなったらお願いします〜。
218デフォルトの名無しさん:2005/04/10(日) 02:03:36
IPアドレスを現在設定しているものとDHCPにするかを数字で選択して変更できる
バッチを作成中なのですが下記のように作成したらECHOで作った簡易メニューの所で
止まらずに自動的にKKCFUNKが組み込まれてせっかく作ったメニューが見えなくなってしまう
。なにか原因があるのでしょうか?

ECHOで作ったメニューで表示をとめて、数字を入力するとその処理が走るように
したいんです。(batkey.comはNECの9821版のDOSプログラム使えたので使ってます。)
219デフォルトの名無しさん:2005/04/10(日) 02:04:59
バッチの内容は下記のものです。
@echo off
echo ------------------------------------------------------------------------------
echo.
echo IPアドレス変更プログラム
echo.
echo     Ver.0.01     
echo.
echo -------------------------------------------------------------------------------
echo.
echo           0 = IPアドレスを自動的に取得する
echo 1 = 元のIPアドレスに戻す
echo 2 = プログラムを終了する。         
echo.
echo   0〜2のどれかを選んでください
echo.
batkey.com 0
if errorlevel 9 goto end
if errorlevel 8 goto end
if errorlevel 7 goto end
if errorlevel 6 goto end
if errorlevel 5 goto end
if errorlevel 4 goto end
if errorlevel 3 goto end
if errorlevel 2 goto end
if errorlevel 1 goto 100
if errorlevel 0 goto 000
220デフォルトの名無しさん:2005/04/10(日) 02:05:27
続きです。

:000
netsh exec dhcp.ip
goto end

:100
netsh exec moto.ip
goto end

:end
cls
@echo off
echo ------------------------------------------------------------------------------
echo.
echo IPアドレスを変更しました。
echo.  現在のIPアドレスは下記の設定になっています。
echo.          
echo.
ipconfig
echo -------------------------------------------------------------------------------
221デフォルトの名無しさん:2005/04/10(日) 02:28:43
なんかしらんが
set /p num=
echo %num%
とか
222デフォルトの名無しさん:2005/04/10(日) 02:52:39
>>218
batkey.com が 16bitのDOSコマンドだから
command.comとMSDOSサブシステムが起動されてしまう。

代わりのWin32コンソールコマンドを探してくるほうが良いね。
223デフォルトの名無しさん:2005/04/10(日) 04:34:39
2ちゃんねらに声をかけたところ
およそ700人の猛者がチャレンジしたブラインドタッチ選手権!
驚異のハイスコア現在1位の1057.2点を越えることが出来るか!
まだまだ2ちゃんねるの猛者達のチャレンジを待っている
それがブラインドタッチクオリティ

↓からいけます
ttp://freegame.sytes.net/~take/cgi-bin/typecreate/index.html
224デフォルトの名無しさん:2005/04/10(日) 11:21:59
>>218
なるほどそういう理由なんですね。
早速代替のコマンド探してきます。ありがと〜
225デフォルトの名無しさん:2005/04/10(日) 14:25:26
@echo off
echo ------------------------------------------------------------------------------
echo.
echo IPアドレス変更プログラム
echo.
echo     Ver.0.01     
echo.
echo -------------------------------------------------------------------------------
echo.
echo 0 = IPアドレスを自動的に取得する
echo 1 = 元のIPアドレスに戻す
echo 2 = プログラムを終了する。         
echo.
echo   0〜2のどれかを選んでください
echo.
226デフォルトの名無しさん:2005/04/10(日) 14:26:10
set /p num=

if "%num%"=="0" goto 000
if "%num%"=="1" goto 100
if "%num%"=="2" goto end

:000
ipconfig > a.txt
goto end

:100
ipconfig /all > a.txt
goto end

:end
cls
@echo off
echo ------------------------------------------------------------------------------
echo.
echo IPアドレスを変更しました。
echo.  現在のIPアドレスは下記の設定になっています。
echo.          
echo.
ipconfig
echo -------------------------------------------------------------------------------


OSが書いてないが、一応2000かXPで動くと思う
227デフォルトの名無しさん:2005/04/10(日) 14:31:44
>>226を訂正します
set /p num=

if "%num%"=="0" goto 000
if "%num%"=="1" goto 100
if "%num%"=="2" goto end

:000
netsh exec dhcp.ip
goto end

:100
netsh exec moto.ip
goto end

:end
cls
@echo off
echo ------------------------------------------------------------------------------
echo.
echo IPアドレスを変更しました。
echo.  現在のIPアドレスは下記の設定になっています。
echo.          
echo.
ipconfig
pause
echo -------------------------------------------------------------------------------
228デフォルトの名無しさん:2005/04/12(火) 11:17:58
バッチファイルで
時刻形式をhhnnssで取得したいです。
echo %time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%
でやると時間が1桁の時、空白となってしまいます。
1桁のときは0を付加したいです。
どのようにしたら良いでしょうか?
229228:2005/04/12(火) 11:39:06
くだらない質問してすみませんでした。
スルーしてください。
230デフォルトの名無しさん:2005/04/12(火) 12:03:03
どっちの方法で自己解決したのか気になる
231デフォルトの名無しさん:2005/04/13(水) 20:13:43
XPを使っています。
C:\temp2の下にあるフォルダをすべて削除するバッチを作っていますが、
下のものを試したのですが、うまくいきません。
フォルダをすべて削除したあとに、IEを開いて、コマンドプロンプトを
自動的に閉じるようにしたいのですが、どうしたらいいでしょうか?

CD C:\temp2
ECHO Y | DEL *.*
C:\Program Files\Internet Explorer\iexplore.exe

DELTREE /Y C:\temp2
C:\Program Files\Internet Explorer\iexplore.exe
232デフォルトの名無しさん:2005/04/13(水) 20:54:13
del * /q
start (ry)iexplorer
233デフォルトの名無しさん:2005/04/13(水) 21:20:24
>>232
ありがとうございます。
/qのところに削除したいフォルダを指定して試してみたのですが、
うまくいきませんでした。
プロンプト画面が現れて、yと入力しないで自動的に削除してほしいと
思っています。あと、バッチファイル自体がなくなってしまうのは
ちょっとまずいので、別な方法はありませんでしょうか。
(削除したあとにIEを起動するといいましたが、プログラムの実行
ファイルを起動させたいと思っています)
すみませんが、お分かりになる方お願いします。
234デフォルトの名無しさん:2005/04/13(水) 21:22:48
/qは確認を無くすオプションだろ。
235デフォルトの名無しさん:2005/04/13(水) 21:36:58
>/qは確認を無くすオプションだろ。

そうでしたか。
ためしに下のようにやってみました。
CD C:\aaa
del * /q
\aaa以下フォルダを含めてすべて削除したいのですが、フォルダは
残ってしまうみたいです。ファイルは削除されました。
236デフォルトの名無しさん:2005/04/13(水) 22:12:14
基本的なことなんだからちっとは検索でもしろ。
237デフォルトの名無しさん:2005/04/14(木) 10:49:48
>>235

@ECHO OFF

SET DELPATH="C:\temp2"

RD %DELPATH% /S /Q
MD %DELPATH%

CD "C:\Program Files\Internet Explorer\"
START IEXPLORE.EXE
238デフォルトの名無しさん:2005/04/16(土) 11:32:51
>>237

お教えありがとうございます。
それを試してみたらできました。
一応、調査したのですが、きほんてきなコマンドで構成されているので、
完全に自分の調査不足でした。
しょうもない質問にわざわざ答えていただきありがとうございました!
239デフォルトの名無しさん:2005/04/22(金) 14:36:45
ショートカットファイル作るコマンドってないですか?
240デフォルトの名無しさん:2005/04/22(金) 14:42:12
>>239
.lnkを作るコマンドは無いよ。
ショートカットを作るコマンドラインアプリがあるからそれでも使えば?
複数作りたいならバッチからそれを使えばいいし。

まあ、ショートカットと同じような動作をするバッチなら、
バッチから作ることも可能だけど。
241デフォルトの名無しさん:2005/04/23(土) 02:58:56
VCで、cl コマンド打っていつもコンパイルしています。
そうすると、コンパイル終了後いつも .obj を生成し、邪魔で仕方ないのです。

@echo off
cl %1
del %1.obj

で、消せるバッチファイルを作ってみたつもりですが、コンパイル後
『aaa.c.obj は存在しません』と出ます。どなたかうまく修正できる方は
いりゃっしゃいませんか?
242デフォルトの名無しさん:2005/04/23(土) 03:03:20
%~n1.obj
243デフォルトの名無しさん:2005/04/23(土) 03:20:47
出来ました、ありがとうございます!
244デフォルトの名無しさん:2005/04/23(土) 04:52:43
make つかえよ
245デフォルトの名無しさん:2005/04/23(土) 16:52:23
dir に拡張オプションとして、/cs を与えたら、一端画面をクリアして
dir を実行するバッチファイルを作りたいです。
本来の /xxx の機能もそのままとして、一体どのように作ればよろしいのでしょうか?
246デフォルトの名無しさん:2005/04/23(土) 19:17:30
/xxx って言うのは、/A とか、 /B とか本来あるコマンド(?)のことです・・・
247デフォルトの名無しさん:2005/04/23(土) 19:31:26
まずコマンド名をDIRとは別にしないと無理。
248デフォルトの名無しさん:2005/04/23(土) 19:32:33
そういった拡張はできんのですか。
残念です。
249デフォルトの名無しさん:2005/04/23(土) 19:42:18
dirc.batで妥協しとけ
250デフォルトの名無しさん:2005/04/23(土) 21:02:24
doskey マクロつかえばできるんじゃない?
251デフォルトの名無しさん:2005/04/24(日) 02:25:20
ちょっと複数ファイルを削除するバッチファイルを作ろうとしました。
ただ、削除するだけだと、なにも表示されなくて不安でしたので、

@echo off
:loop
erase /S %1
shift
if not "%1" == "" goto loop

と /S をつけてみただけでうまく行かなくなりました。
どないして・・・
252デフォルトの名無しさん:2005/04/24(日) 14:25:51
レスがきちょらん。・゚・(ノД`)・゚・。
そんなに馬鹿らしい質問だったのかな??
マジで困ってます。お助け
253デフォルトの名無しさん:2005/04/24(日) 14:39:17
> そんなに馬鹿らしい質問だったのかな??
うん
254デフォルトの名無しさん:2005/04/24(日) 15:30:06
>>252
( ´,_ゝ`)プッ
255デフォルトの名無しさん:2005/04/24(日) 17:08:03
>>252
はっはっはっ
256デフォルトの名無しさん:2005/04/24(日) 17:19:08
まぁ、そんなに苛めんなや。

>>252
"/s"の意味を、erase /? して確認してから出直しておいで。
257デフォルトの名無しさん:2005/04/24(日) 18:06:03
>>251

@echo off
erase %* /p
258デフォルトの名無しさん:2005/04/29(金) 17:28:16
00000101というような文字を、101という数値として使いたいんですが、
何か良い方法は無いですか?
このまま変数に格納しても計算(Set /a)で扱えないし
Set hoge=00000101
Set hoge=%hoge:0=%
とかだと、101ではなく11になってしまいます。
やっぱ先頭から1文字ずつ当たっていって、0以外になる位置を探すしか無いんですかね?
バッチ内でもっと簡単に出来る方法を知ってる方が居ましたら教えてください。
259デフォルトの名無しさん:2005/04/29(金) 18:05:55
とりあえず、与える文字の文字数が固定だったら、
Set hoge=00000101
set /a hoge=1%hoge%-100000000
260デフォルトの名無しさん:2005/05/02(月) 10:49:01
Forを2段使ってるときに、2段目である条件を満たしたら
2段目のForを抜けて1段目のForに戻るにはどうすれば良いですか?
 For (
 For (
 If 条件 goto 000
 )
 :000
 @
 )
という方法だと、@の部分の処理を1回だけ行い1段目のForも抜けてしまいます。
VBで言うところのExit Forのように、2段目のForだけを抜けるにはどうすればいいですか?
261デフォルトの名無しさん:2005/05/02(月) 12:34:54
>>260
call : でサブルーチンにするとか、
262260:2005/05/02(月) 13:36:30
>>261
それをやりたくないからここに聞きに来た次第です。
何とぞよろしくお願いします。
263デフォルトの名無しさん:2005/05/02(月) 15:40:39
質問です。
複数ファイルの同時起動をさせたいのですが、
"c:\a.exe"
"d:\b.exe"
"d:\c.exe"
exit
で、aを終了させないとbが起動しません。( 同様にcも)
"c:\a.exe"|"d:\b.exe"|"d:\c.exe"
exit
とするとabcとも起動はしますがabcを終了させるまでプロンプトのウインドウが消えません。
ウインドウを残さずに同時起動させるにはどうすればよいかご教授いただきたく存じます。
OSはWinXPsp2です。
264デフォルトの名無しさん:2005/05/02(月) 16:07:03
start
265263:2005/05/02(月) 18:44:45
d。
266デフォルトの名無しさん:2005/05/03(火) 23:13:33
質問です
ファイル名を先頭から3文字消して付け直したいのですが方法が思いつきません
3文字に規則性はないです
267デフォルトの名無しさん:2005/05/04(水) 00:28:35
>>266
ren * abc*
268デフォルトの名無しさん:2005/05/04(水) 00:29:45
>>266
Set hoge=ファイル名
Set hoge=%hoge:~2%

これで hoge にファイル名の先頭から3文字を消した文字列が格納される。
あとはお好きなように。
269デフォルトの名無しさん:2005/05/07(土) 23:22:32
del >>266
270デフォルトの名無しさん:2005/05/08(日) 07:02:13
hogeってどういうコマンドですか?
271デフォルトの名無しさん:2005/05/08(日) 07:12:36
272デフォルトの名無しさん:2005/05/08(日) 15:06:56
>>270
人によって
コマンド名だったり変数名だったり関数名だったりメソッド名だったりクラス名だったりする
ステキな文字列
273デフォルトの名無しさん:2005/05/08(日) 21:33:28
C:\hoge.exeが自分自身を削除できるよう、以下のようなバッチファイルを書き出し、
実行させています。

---------------------------------
:TOP
@DEL C:\hoge.exe/a:h
@DEL C:\hoge.exe
IF EXIST C:\hoge.exe GOTO TOP
@DEL C:\hoge.pif
@DEL C:\hoge.BAT
--------------------------------

※C:\hogeは自身のパス+ファイル名となります。

このように階層が浅い場合はうまくいくのですが、階層の深いディレクトリ(デスクトップ等)
になると削除できずに残ってしまいます。一体何故なのでしょうか。また、階層が深い
ディレクトリでも削除できるようにするにはどうすれば良いのでしょうか。
274273:2005/05/08(日) 21:36:29
すいません。相対パスで指定する事で解決しました。
お騒がせしました。
275デフォルトの名無しさん:2005/05/13(金) 23:36:23
WindowsXPって標準でzip圧縮出来ますよね。
これをバッチから行うにはどうすれば良いのですか?

たとえば%1(フォルダ)を"%~dpn0\hoge.zip"に圧縮する場合は?
276デフォルトの名無しさん:2005/05/15(日) 21:50:37
特定フォルダ内に.aaa .bbb .ccc の拡張子のファイルがあるとします。
(これらの拡張子のファイルが同時に存在することはありません)

*.aaa *.bbb → 1111(拡張子無し)
*.ccc     → 2222.333

このようにファイル名を変更し、
さらに元のファイルのバックアップを拡張子.bac
で作成するバッチファイルはどのように作ればイイですか?

このようにファイル名前を最初に設定しておけば
ドラッグ&ドロップで簡単にファイル名を変換してくれるソフト
ありませんか?
277デフォルトの名無しさん:2005/05/15(日) 22:09:13
>>276
マルチかよ..._| ̄|○
向こうで回答しちゃったじゃねーかコノヤロー

とりあえず向こうではバックアップの件は書いてなかったから
バックアップを取る処理はしてないけど、
マルチにこれ以上答える義理はないから後は自分でがんがれ。
278276:2005/05/15(日) 22:19:40
>277

マルチになってもうしわけありません。
書き込みが終わってからバッチファイルでできるんでは?
と思いこっちにも書き込んでしまいました。
バッチファイルは基本50%もわからないくらいダメな男ですが
これを機に勉強したいと思います。

もしよろしければ特定フォルダ内だけのファイル操作にしたいのですが
どのようにすればイイですか?

バックアップはcopyを使えばイイと思うのですが
これは自分で考えてみます。


バッチ

@echo off
CD/d "%~dp1"
:loop
if %~x1==.aaa REN "%~nx1" "1111" & goto End
if %~x1==.bbb REN "%~nx1" "1111" & goto End
if %~x1==.ccc REN "%~nx1" "2222.333" & goto End
:End
if ERRORLEVEL 1 pause
if exist "%~2" shift & goto loop
===ここまで===

あとは内容を下記を参考に書き換えて使ってくれ
if %~x1==.拡張子 REN "%~nx1" "ファイル名" & goto End
279デフォルトの名無しさん:2005/05/15(日) 22:37:26
> これを機に勉強したいと思います。
そう思わなくても自分で勉強するしかないな。

どんな事情があっても、一方の質問を取り下げずに
他のスレでマルチ質問したら、回答を得る権利が失われるから。
280デフォルトの名無しさん:2005/05/15(日) 22:52:00
はつみみです。
281275:2005/05/16(月) 08:16:20
282デフォルトの名無しさん:2005/05/16(月) 08:24:05
>>281
どうかしましたか?
283デフォルトの名無しさん:2005/05/16(月) 08:49:06
>>275
それのどこがプログラミング?
OSやアプリの使い方を知りたいならWindows板とか
284デフォルトの名無しさん:2005/05/16(月) 08:58:27
>282-283
相当イヤな奴だな
285デフォルトの名無しさん:2005/05/16(月) 09:50:48
>>1
関連スレ
初心者〜管理者まで必読!コマンドライン(DOS Pt.3)
http://pc5.2ch.net/test/read.cgi/win/1062775949/
MS-DOS・Win3.1総合スレッド
http://pc5.2ch.net/test/read.cgi/win/1025462258/
286デフォルトの名無しさん:2005/05/16(月) 10:21:26
275 には誰も回答できないで FA
287デフォルトの名無しさん:2005/05/16(月) 10:51:59
まだいたの
288デフォルトの名無しさん:2005/05/16(月) 11:57:09
いるんです
289デフォルトの名無しさん:2005/05/16(月) 22:52:38
素直にWin32用のInfo-Zip/UnZipでも使え。
そっちの方が手っ取り早い。
290デフォルトの名無しさん:2005/05/16(月) 22:56:59
>289
ワロタw
291デフォルトの名無しさん:2005/05/16(月) 23:01:52
MS-DOS で UNIX の which コマンド相当のものはないのですか?
調べてもわかりません。たぶんないとは思いますが、どなたか
bat ファイルで実現できませんか? よろしくお願いします。
2921:2005/05/16(月) 23:17:07
>>291
これか?
http://www.atmarkit.co.jp/fwin2k/win2ktips/319which/which.html
"which" で日本語のページを検索したらトップに出てきたが。
293デフォルトの名無しさん:2005/05/16(月) 23:56:09
>>292
あっ、ありがとうざいます!!
which MS-DOS 相当 とか混ぜで検索してましたヨ witch だけで良かったんですね。
ありがたく使わせていただきます。
294デフォルトの名無しさん:2005/05/23(月) 11:47:45
数個あるテキストファイルからある特定の文字列ではじまる行を抜き出して、他のある特
定の文字列ではじまる行に付け加えたいのですが、どうすれば良いのでしょうか?

例)abc.txtの中身
xxx hello
yyy 123

このテキストファイルを

xxx hello 123
yyy 123

に書き換えたいのです。
バッチファイルで実現可能でしょうか?
295デフォルトの名無しさん:2005/05/23(月) 12:20:37
>>294
バッチでも出来るけどFSO使えるスクリプト使った方が楽
wsfでもJavaScriptでもvbsでもなんでもいいけど。
環境があるならperlとかでもいいし。
どっちにしろ書き換えではなく書き出しの中で付加する形になるけど
バッチでやるならForでファイル読みながらIFで条件判断してtempに書き出し
終わったら書き出したファイルを元ファイルに上書きでok
296デフォルトの名無しさん:2005/05/23(月) 14:31:18
バッチファイルだけでは実現不可能。
少なくとも、cmd.exe類似のコマンドインタプリタが必要。
297デフォルトの名無しさん:2005/05/23(月) 14:43:01
めんどくさそうだけど、バッチだけでもやろうと思えばできるんじゃね?
298デフォルトの名無しさん:2005/05/23(月) 14:57:54
for /f でファイルを1行ずつ読める
299デフォルトの名無しさん:2005/05/23(月) 14:59:26
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
この例は、myfile.txt の各行を解析します。セミコロンで始まる行を無視し、
各行の 2 番目と 3 番目のトークンを for 本体に渡します。トークンは、カンマ
またはスペースで区切られています。for 本体の文が %i で 2 番目のトークン
を、%j で 3 番目のトークンを取得し、%k で 3 番目移行のすべてのトークンを
取得していることに注意してください。スペースを含むファイル名に対し...
300デフォルトの名無しさん:2005/05/26(木) 23:02:22
すみません。>>273でも出ているのですが、深い階層のファイルを指定すると
「指定されたパスが見つかりません。」と怒られてしまいます。
これはどうにもならないのでしょうか?
301300:2005/05/26(木) 23:41:16
真下に解決策が書いてありました。。すみません。。
302デフォルトの名無しさん:2005/06/05(日) 10:48:42
%1に文字列fooが含まれてるかどうかってどうやって判別すればいいですか?
303デフォルトの名無しさん:2005/06/05(日) 15:25:37
>>302
@echo off
if %~1==foo (
@echo あるがな
) else (
@echo ないがな
)
みたいな
304デフォルトの名無しさん:2005/06/05(日) 15:26:46
>>302
set dummy=%1
set dummy=%dummy:foo=%
if "%1"=="%dummy%" echo "foo"は含まれていません。
305デフォルトの名無しさん:2005/06/05(日) 15:30:47
こうしてみると、cmd.exe もなかなか個性が豊かですなー。
でも、もうcygwinでいいんじゃん…
306デフォルトの名無しさん:2005/06/05(日) 16:16:58
             ___
.            |(・∀・)|
.            | ̄ ̄ ̄   シグウィン独立領
         △
        △l |
   __△|_.田 |△_____
      |__|__門_|__|_____|_____

自分の中じゃ上のような感じでちょっと大げさな気もする。
307デフォルトの名無しさん:2005/06/05(日) 17:54:56
>>303
それって「fooが含まれてるか」ではなくて「fooに一致するか」だろw
308デフォルトの名無しさん:2005/06/15(水) 14:37:32
if exist %WINDIR%\SYSTEM32\CONFIG goto ACT-NT
ELSE goto ACT-9X

:ACT-9X
echo このバッチファイルは無効です。

:ACT-NT
※1
set /p x="ファイルを指定してください。(終了はend)">
if %x%==end goto end
javac %x%
※2

この文の※1でディレクトリをx:\javaに、※2の方で
「java [ファイル名(拡張子なし)]」を実行させたいのですがどの様に
すればいいのでしょうか?※1の方はcd chdirなど変えてきましたが、
構文エラーになり全くわかりません。※2も色々調べましたが分かりません。
renかな?と思ったのですが、XP以外の環境(98SE、2000)でも使うため、
この方法が駄目だと分かりました。
309デフォルトの名無しさん:2005/06/15(水) 15:17:05
>>308
最初の2行のIf_Elseの構文が既に間違ってるんですけど。
というか、それを見る限りElseと:ACT-9Xのラベルは要らないんですけど。

君のレベルじゃこのスレには質問者として来るのもまだ早い。
基本的なことくらい自分で勉強してこい。
310デフォルトの名無しさん:2005/06/15(水) 23:06:55
>>308
こちらにどうぞ

初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
ttp://pc8.2ch.net/test/read.cgi/win/1116131036/
311デフォルトの名無しさん:2005/06/15(水) 23:18:09
つーかなんで追い出すのかわからん。
javaもわからんけど。
312デフォルトの名無しさん:2005/06/24(金) 12:34:06
下記のようなファイル(test.txt)があり、これらを一行づつ
読み込ませたいと思っています。

1,○, , ,
2, ,○, ,
3, , ,○,

で○のついた箇所でメッセージを出したいのですが、どうす
れば良いのでしょうか?

↓でやってみましたが全然ダメでした。バカなので根本的に
間違ってるんだと思いますorz

for /f "delims=, tokens=2-4" %%a in (test.txt) do (
if %%a == ○ echo "1-1"
if %%b == ○ echo "1-2"
if %%c == ○ echo "1-3"
if %%d == ○ echo "2-1"
if %%e == ○ echo "2-2"
if %%f == ○ echo "2-3"
if %%g == ○ echo "3-1"
if %%h == ○ echo "3-2"
if %%i == ○ echo "3-3"
313デフォルトの名無しさん:2005/06/24(金) 13:12:44
>>312
思わず 「awkかPerlでやれ」 と言ってしまいたくなるような処理だが
こんな感じでどうか。

for /f "delims=, tokens=1-4" %%a in (test.txt) do (
if "%%b" == "○" echo "%%a-1"
if "%%c" == "○" echo "%%a-2"
if "%%d" == "○" echo "%%a-3"
)
314312:2005/06/24(金) 17:51:18
>>313
解決しました。有難うございます。
そんな書き方もあるんですね。
315デフォルトの名無しさん:2005/07/03(日) 03:12:08
同一フォルダ内に、
----------
a.txt.bak
b.txt.bak
c.txt.bak
----------
というファイルがあるとして、.bak を取り除くプログラムを組みたい
のですが、どのようにすればよいですか?
rename で、.bak を取ったように rename すればいいと思うのですが、
for 文の回し方がよくわかりません。
316デフォルトの名無しさん:2005/07/03(日) 06:49:42
>>315
for %I in (*.txt.bak) do ren "%I" "%~nI"
317デフォルトの名無しさん:2005/07/03(日) 17:43:22
>316
すみません。どうしてかエラーが出てしまいます。使い方が間違っているのでしょうか?
関係ないかもしれないけど、自分の環境はWindows2000です。
 ↓
>test a.txt.bak b.txt.bak
>test a.txt b.txt
>test a.txt
>test
バッチ パラメータの置き換えで、パス演算子の次の使用法は無効です:
%~nI"

有効な形式については、CALL /? または FOR /? と入力してください。
318デフォルトの名無しさん:2005/07/03(日) 19:33:41
>>317

FOR /?
319317:2005/07/03(日) 20:45:47
% を %% にしたら動いてくれました お騒がせしました。
320デフォルトの名無しさん:2005/07/04(月) 10:32:03
>>315
ren *.bak *.
じゃダメなの?
321デフォルトの名無しさん:2005/07/04(月) 18:29:10
ログファイルに時分秒を表示させたいのです。
で、"TIME"を使ってみたのですが、画面が待機状態になって動かなくなってしまい、"TIME /T"と打つと表示だけになりましたが、分迄しか表示されませんでした。
上手い方法はあるでしょうか。
322デフォルトの名無しさん:2005/07/04(月) 18:39:52
こんなでいいのかな?
echo %time% →ミリ秒削る場合は echo %time:~0,8%
ttp://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html
323デフォルトの名無しさん:2005/07/04(月) 18:40:23
time <nul
324321:2005/07/05(火) 09:29:10
>>322
ありがとうございました、無事に上手く出来ました。
325デフォルトの名無しさん:2005/07/05(火) 17:25:42
>323はお気に召さなかったらしい。
326デフォルトの名無しさん:2005/07/05(火) 18:12:30
そりゃそうだろうな
327デフォルトの名無しさん:2005/07/05(火) 18:57:44
time <ぬるぽ
328デフォルトの名無しさん:2005/07/05(火) 23:11:19
>>327
ガッ
329デフォルトの名無しさん:2005/07/09(土) 03:54:10
> うんこ
'うんこ' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
330デフォルトの名無しさん:2005/07/11(月) 08:53:11
age
331デフォルトの名無しさん:2005/07/20(水) 20:52:24
age
332デフォルトの名無しさん:2005/07/28(木) 03:31:45
以下のように環境変数が定義されているとして、

set data1=aaa
set data2=bbb
set data3=ccc

FORコマンド 辺りを使って環境変数 data1, data2, data3の
フォルダを作成する方法はないものでしょうか。

今のところ、以下のように一つづつフォルダを作成する方法しか
思いつきません。
md %data1%
md %data3%
md %data2%
333デフォルトの名無しさん:2005/07/28(木) 05:47:00
環境変数列挙
FOR /F %i IN ('set') DO @echo %i
334デフォルトの名無しさん:2005/07/28(木) 06:03:30
for %%i in ("%data1%" "%data2%" "%data3%") do mkdir %%i && echo succ || echo fail
335デフォルトの名無しさん:2005/07/28(木) 06:18:47
SETLOCAL
SET i = 0
:S
SET /A i += 1
for /f "tokens=3" %%a in ('set data%%i%%') do mkdir %%a && goto S
ENDLOCAL
336デフォルトの名無しさん:2005/07/28(木) 12:28:41
>333-335
回答を参考にしてほしいバッチファイルを作成することができました。

最終的に >335 の5行目を

for /f "tokens=2 delims== " %%a in ('set data%%i%%') do mkdir %%a && goto S

としました。

早い対応まことにありがとうございます。
337デフォルトの名無しさん:2005/07/28(木) 12:35:24
にしてもLonghornでてもシェルスクリプトはcmdのままなのかね・・・
338デフォルトの名無しさん:2005/07/28(木) 12:53:48
setlocal enabledelayedexpansion
for /l %%i in (1,1,3) do mkdir !data%%i!
endlocal
339デフォルトの名無しさん:2005/07/30(土) 05:15:33
C言語での
#define FILE_NAME "hoge.bat"

のような機能を使って変数を最初にまとめたいのですが、
調べても分からないのでご教授お願いします。
340デフォルトの名無しさん:2005/07/30(土) 05:30:23
call
341デフォルトの名無しさん:2005/07/30(土) 05:59:13
>>340
そういう使い方あるんですね・・・orz
ありがとうございました
342デフォルトの名無しさん:2005/07/30(土) 09:44:58
>>339
set FILE_NAME=hoge.bat
じゃねーの?

いいけどさ。
343デフォルトの名無しさん:2005/08/04(木) 12:20:51
フォルダ群の中から特定の文字列を持つフォルダだけを別の場所に移動したいのですが
うまくバッチで対応できますか?
344デフォルトの名無しさん:2005/08/04(木) 12:28:55
for /d %%a in (*特定の文字列*) do
345デフォルトの名無しさん:2005/08/04(木) 12:37:03
エクスプローラで簡単にできることでも
わざわざバッチなんだ
346デフォルトの名無しさん:2005/08/04(木) 12:43:12
>>344
ありがとん
ageてごめんね(><)
347デフォルトの名無しさん:2005/08/04(木) 12:46:30
エクスプローラで簡単にできることを更に簡単に行うためにバッチなんだろ。
348デフォルトの名無しさん:2005/08/04(木) 12:53:23
>>345
大量に発生するフォルダの場所と名前は決まってて最終的な保存先は決まってるから
出来れば作業を単純化(ツリー構造を知らない人でも使えるように)したいんです。(><)
349デフォルトの名無しさん:2005/08/04(木) 13:45:05
フォルダAに複数ある”特定文字列Axxxx”と”特定文字列Bxxxx”というフォルダ(xxxxは不特定)を
別ドライブにある対応フォルダAとBにそれぞれ振り分けたいんです。

自分には出来ませんでした!(>.<)

350デフォルトの名無しさん:2005/08/04(木) 14:19:30
ここは「バッチ」スレじゃなくてバッチ「プログラミング」スレだからな
PC初心者板で質問した方がいいと思うよ
351デフォルトの名無しさん:2005/08/04(木) 14:37:20
昨日、とりあえずPCを窓から投げ捨てるんだと言われました。(><)
352デフォルトの名無しさん:2005/08/05(金) 17:28:47
大学の授業の関係で地図描画用のバッチ作り始めたんだが
これLinuxでシェル書いた方が楽なんかな?
過去ログ読んだ感じじゃバッチのが書くのが楽そうなんだけど

環境はXP、一応Cygwin入れてある
地図描画のソフトがGMTっていうハワイ大学かどっかのやつ
353デフォルトの名無しさん:2005/08/05(金) 17:58:21
シェルはまさしくそうしたことにも耐えられるように設計されている。
バッチはそこまでは意図していない代物から継ぎ足し継ぎ足しで進化してきている。
どっちが向いているかは自明。
354デフォルトの名無しさん:2005/08/05(金) 19:45:27
ユーザーの声を取り入れながら進化してきたBATにはかないませんよ。
355デフォルトの名無しさん:2005/08/06(土) 01:03:31
まあWinでもLinuxでも大概 {perl,ruby} -e で片付けちゃうけどな俺の場合。
356デフォルトの名無しさん:2005/08/06(土) 01:41:24
いまさらバッチファイルの優位性なんて誰も主張してないんだから帰った帰った
357not 302:2005/08/08(月) 07:35:20
すみません、>>304の「set dummy=%dummy:foo=%」の意味がわからないのですが、
解説お願いできますか?
358デフォルトの名無しさん:2005/08/08(月) 08:00:35
変数の中の"foo"を空文字に置換

"aaafoobbb" → "aaabbb"
"aaabarbbb" → "aaabarbbb"

置換前と後で内容が同じなら"foo"は含まれてなかった、
違えば"foo"が含まれてたってこと。
359357:2005/08/08(月) 10:31:15
なるほどー、理解できました。ありがとうございます。
360デフォルトの名無しさん:2005/08/12(金) 05:06:53
list1.txt, list2.txtから一行ずつ読み込んで行く処理って書けますか?
list1.txtから順番に読むループの中にlist2.txtを目的行まで空読みするしかないですかね。
361デフォルトの名無しさん:2005/08/12(金) 05:33:28
そういうのはWSH使った方がいいと思われ
362デフォルトの名無しさん:2005/08/13(土) 22:17:46
実行したコマンドとその結果をファイルに出力することってできますか?
以下の2行を1行にまとめるような。。

echo net use k: \\Computer\Common > log.txt
net use k: \\Computer\Common  >> log.txt
363デフォルトの名無しさん:2005/08/14(日) 10:46:44
>>362
そのバッチを別のバッチから呼べばいいんじゃない?
364デフォルトの名無しさん:2005/08/14(日) 23:20:16
>362
@echo %*
@%*
こんなバッチファイルを作って call するとか。
365デフォルトの名無しさん:2005/08/15(月) 21:42:25
362です。
>>363さん >>364さん レスありがとうございます。

やっぱ1行にまとめるのはできなそうなんですね。イメージ的には、echo した標準出力の
文字列(コマンド)を、パイプで受けてなんかのコマンドの引数にして実行するみたいな。
で、そのときにecho の出力は同時にログファイルに書き、パイプで受けて実行したコマンド
の結果もログファイルに書くような。

(後でログファイル見ても何のコマンドを実行した結果なのかわからないことがあって、
かといって、何のコマンドを実行したかを、コマンドを実行する前に echo で記述しておく
のは2度手間だし、修正があったとき間違えそうなので1つにできればと思いました。)

364さんの方法で2度手間は解決できそうです。

どうもありがとうございました。
366デフォルトの名無しさん:2005/08/19(金) 01:40:47
net use *
で接続した共有資源をbatの最後で切断したいのですが、
割り当てられたデバイス名(D:〜Z:)を取得する方法はありますでしょうか?
367デフォルトの名無しさん:2005/08/20(土) 12:42:53
>>366
net useの結果を加工すればいいけど、vbsで組んだほうが簡単かも。
スレ違いごめん。

on error resume next

strComputer = "."
set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkConnection",,48)

for each objitem in colItems
if objItem.LocalName <> "" then
Wscript.Echo objItem.LocalName
end if
next
368デフォルトの名無しさん:2005/08/22(月) 11:17:02
>>367
ご丁寧にありがとうございます。
やはりVBSが楽そうですね。
369デフォルトの名無しさん:2005/08/25(木) 20:28:37
>365
echo %* | tee history.log | cmd /k
370デフォルトの名無しさん:2005/08/25(木) 20:31:44
teeなんてねー
371デフォルトの名無しさん:2005/08/27(土) 17:14:45
質問です。
対象のレジストリキーの値のDWORD値を参照して、もし1なら2に書き換える
という様にするにはどうすればいいでしょうか?
372デフォルトの名無しさん:2005/08/27(土) 17:26:29
wsh使え
まあ、XPならReg.exeが使えるからバッチでも簡単だけど
373デフォルトの名無しさん:2005/08/27(土) 17:26:39
あぁすいません。10分で自己解決しますた。(*´д`*)
374デフォルトの名無しさん:2005/08/28(日) 11:36:44
XPです。実行されたバッチファイルの
ドライブとディレクトリを取得する方法がありましたら教えてください。
以下のものをより汎用的にしたいです。

@echo off
set make_exe=d:\cc\make
set work=d:\work
d:
cd %work%
@echo on
%make_exe%
375デフォルトの名無しさん:2005/08/28(日) 11:41:49
%~dp0
376デフォルトの名無しさん:2005/08/28(日) 12:00:31
なるほど。こうすれば(↓)いいんですね。

SET WORK=%~dp0
SET DRIVE=%WORK:~0,2%

ありがとうございました。
377デフォルトの名無しさん:2005/08/28(日) 12:18:08
バッチファイルから起動してもプロンプトが閉じず、
ログをプロンプトで見れる方法はありませんか?
378デフォルトの名無しさん:2005/08/28(日) 12:34:46
pause
379デフォルトの名無しさん:2005/08/28(日) 12:41:03
>>378
確かにそうなんですが、結果によって次のコマンドも打ちたいのです。
説明が悪くてすみません。
380デフォルトの名無しさん:2005/08/28(日) 12:59:08
最後に@cmdって入れとけ
381デフォルトの名無しさん:2005/08/28(日) 12:59:39
日本語でよろしく
382デフォルトの名無しさん:2005/08/28(日) 13:00:55
>>379
ショートカット作ったら?
383デフォルトの名無しさん:2005/08/28(日) 13:07:06
>>380
@ってecho以外にも指定があったのですね。
ロゴは気になりますが、満足いく機能が出来ました。
ありがとう。
384デフォルトの名無しさん:2005/08/28(日) 13:14:28
>>383
ロゴ出したくなかったらショートカット作ってリンク先を、

%ComSpec% /k "バッチファイルのパス"

にするといいはず。
385デフォルトの名無しさん:2005/08/28(日) 14:18:20
>>384
おお、この方法で作業ディレクトリを
%~dp0にすると滅茶苦茶使いやすくなります。
大感謝です。
386デフォルトの名無しさん:2005/09/02(金) 15:30:21
ドラッグ&ドロップしたファイル(主に複数)のテキストファイルに対して、
本文中のタブと空白、ファイルの拡張子を削除するバッチを作ろうと思っているのですが、
どのようにしたらよいでしょうか。よろしくお願いいたします
387デフォルトの名無しさん:2005/09/02(金) 15:33:08
こっちで聴いた方が100倍効率的
お前ら、wsh使ってますか? Part4
http://pc8.2ch.net/test/read.cgi/win/1100489339/
388デフォルトの名無しさん:2005/09/02(金) 23:11:08
wshってノートン先生がヒステリックになるからヤダ
389デフォルトの名無しさん:2005/09/03(土) 00:12:34
>>388
というかノー○ンのほうを捨てろ。俺も昔はノー○ンマンセーだったが、あまりの重さにノー○ンは捨てた。
ちなみにM○Feeとかト○ンドマイクロとかも使ってみたけどこいつらも重すぎ。
結局いまはアンチウィルスの比較サイトを参考にしてNOD32を使ってる。
アンチウィルスソフトはたいていどれも評価利用ができるようになってるから実際に使ってみて比べるのが吉。

・・・スレ違いスマソン。
390デフォルトの名無しさん:2005/09/03(土) 00:21:26
>>389
攻撃してきた奴の住所が分かるから最近のノートン先生は楽しいよ
391デフォルトの名無しさん:2005/09/03(土) 00:39:59
ノーパン健康法の俺が来たよ
392デフォルトの名無しさん:2005/09/03(土) 00:44:29
>>391
俺もさっきノーパン健康法について語り合ってきた
393デフォルトの名無しさん:2005/09/03(土) 01:04:00
いい年こいてつまらんレス付けるなぁ
394デフォルトの名無しさん:2005/09/03(土) 01:14:50
そういうお前がつまらん
395デフォルトの名無しさん:2005/09/05(月) 16:57:54
>>394
お前のは最高に面白いレスだよね
396デフォルトの名無しさん:2005/09/06(火) 21:38:55
>>395
残念ながらお前はいまいちだ
397デフォルトの名無しさん:2005/09/07(水) 17:45:34
もう良いよ
398デフォルトの名無しさん:2005/09/12(月) 20:24:47
XPです。
複数行のテキストファイルの内容を一つの変数にいれることは出来ますでしょうか?
1行ずつ読み込んで、どんどん結合してければよいんですが。
399デフォルトの名無しさん:2005/09/12(月) 21:28:53
CMDの起動オプションで遅延環境変数の展開を有効にしてから
FOR /Fで一行づつ読み込んで環境変数に追加していけばできるかも。
400デフォルトの名無しさん:2005/09/12(月) 21:37:35
遅延環境変数を有効にするにはsetlocal enabledelayedexpansionで可能
401398:2005/09/12(月) 23:08:01
>>399-400
ありがとうございます、何とかできました。

setlocal enabledelayedexpansion
for /f %%A in (C:\foo.txt) do (
  set s=!s!%%A
)
echo %s%


すいませんがもうひとつ、
1行ごとに改行を付加することは可能でしょうか?
最後のechoで複数行表示したいのです。

402398:2005/09/12(月) 23:50:12
自分で読み返してみると誤解されそうな書き方だったんで補足します。
(テキストの内容を表示したいだけなら最初からtype使えばいいですよね。)


最終的には読み込んだ複数行のテキストをIPMessengerで送信します。

vbsなどでは

str = str & 読み込んだテキスト & vbCrLf

などと、改行も含めて変数に追加していき

ipmsg /msg localhost str

で、複数行のメッセージも送信できますが、
これをバッチのみで行いたいのです。




403デフォルトの名無しさん:2005/09/13(火) 01:03:03
>>402

vbs でほんとにできるか?
404403:2005/09/13(火) 01:25:28
ああ、できるね。ごめんよ。
405398:2005/09/13(火) 22:59:39
変数に改行を含めるのがうまくできません、
制御コードとも違いますよね。。。orz
406デフォルトの名無しさん:2005/09/13(火) 23:29:52
なぜIP Messenger の作者の掲示板で聞かないんだろう?
もしかするとパイプでできるかもしれないし
ファイル名指定して送信できるように改良してくれる可能性だってある。
407デフォルトの名無しさん:2005/09/13(火) 23:36:49
改行付加はできるけど、ここでする話題じゃないだろ。
408デフォルトの名無しさん:2005/09/14(水) 01:35:21
「環境変数に改行文字をセット」でググれ
知りたいのは結局これだろう?
IP Messengerとか言い出すから誤解される。
409398:2005/09/14(水) 18:35:45
^ による行の継続と、遅延展開を使って
目的どおりの結果を得ることができました。

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

410デフォルトの名無しさん:2005/09/22(木) 11:22:33
日付のフォルダ自動作成バッチを作りたいのですが、

バッチファイルの中身↓

for /f "tokens=1 delims=/ " %i in ('date /t') do set yyyy=%i
for /f "tokens=2 delims=/ " %i in ('date /t') do set mm=%i
for /f "tokens=3 delims=/ " %i in ('date /t') do set dd=%i
mkdir "%yyyy%年%mm%月%dd%日"

↑このような内容のバッチファイルを実行しても何も起きませんが、
コマンドプロンプトを開いて、順次、一行づつこれらの命令を実行すると
ちゃんとフォルダが作成されます。

for〜以下の命令が終わらないうちに、mkdirの命令も同時に走ってしまい、
そのため失敗するようです。

1行1行の命令の後に、たとえば0.5sec待つとかいう方法や、
mkdir〜の行だけをちょっと実行を待つ方法や、その他の手法
(要は日付のフォルダが作れればどんな手法でも構いません)がありましたら、ご教示願えますでしょうか。

ちなみにfor〜の3行だけのbatファイルとmkdirだけのbatファイルに分けるのは無理とわかりました。
batファイルは一個づつ終了してしまい、先に実行したbatファイルの結果はどこにも保存できないようです。
411デフォルトの名無しさん:2005/09/22(木) 11:29:12
>>410
%%

超基本っつーか、それ以前の話だ。
つーかもっと簡単に(以下略
412410:2005/09/22(木) 11:33:00
>>411

OSはWindows2000です。ちなみに%%だと実行すらできません。

と思ったらbatファイルにしたらできたよ!すんません・・・orz

コマンドプロンプトだとできなかったのに、batファイルだとできるのか。。。 orz キホンダッテサ・・・
413デフォルトの名無しさん:2005/09/22(木) 11:37:28
forの変数はコマンドプロンプトでは%、バッチでは%%
そんなことちょっと調べりゃいくらでも書いてあるし、
このスレ見ただけでもわかれうだろうに
414デフォルトの名無しさん:2005/09/23(金) 02:27:43
そうだよ、そのくらい誰でもわかれうよ。

>>412
それはさておき、なぜ%が二つ必要か理解できてる?
415デフォルトの名無しさん:2005/09/23(金) 02:35:19
>>414
あのレベルなら理由を知っておく必要はない
丸暗記してるだけで充分だ

そして聞かれてもないのにお前がシッタカ風吹かせる必要もない
聞かれたときの答えてやればいい
まあ、ここの常駐ならほとんど誰でも答えられるだろうけど
416デフォルトの名無しさん:2005/09/23(金) 02:36:45
>>414
412じゃないけど理解できない。

昔のDOSでは 『 echo %TEMP% 』 の結果は 『 %TEMP% 』だったけど
CMD.EXEでは 『 C:\Docume 〜〜』 となる。

なぜ % ひとつでよいのか?
417デフォルトの名無しさん:2005/09/23(金) 02:46:21
なんか違う方向行ってるな
418デフォルトの名無しさん:2005/09/23(金) 11:34:00
もしかしたら、>415は>414が>413へのあからさまな皮肉を書いているのに気付いていないのだろうか。
419デフォルトの名無しさん:2005/09/23(金) 13:53:28
空気
420デフォルトの名無しさん:2005/09/23(金) 21:31:40
すいません教えていただけませんか

ファイル名の頭に8桁の任意の数値を追加したいのですが
バッチ処理するにはどうしたらよいのでしょうか

ググらないで教えて君も甚だしいのは承知ですが時間がありません
初心者のくだらない質問ですが宜しくおねがいいたします

今からググってきます
421デフォルトの名無しさん:2005/09/23(金) 21:48:19
>>420
普通にやればいいと思うよ
普通なやり方はググってね
422デフォルトの名無しさん:2005/09/23(金) 21:53:15
すみません
来週までに必要なんです

プログラム全く素人です
引き続きググってきます
423デフォルトの名無しさん:2005/09/23(金) 21:57:20
なんだ、まだ数十時間あるじゃないか。
ググってどうしても解らなかったら
「自分なりに書いた物」をここに貼って、日曜の22時以降に質問しろ
そしたら答えよう

今すぐ必要って訳じゃないみたいだからその方がお前のためになるしな
424デフォルトの名無しさん:2005/09/23(金) 22:06:03
一緒にsageも覚えてこい豚
425デフォルトの名無しさん:2005/09/23(金) 22:07:41
わかりました

頑張ってみます
426デフォルトの名無しさん:2005/09/24(土) 00:04:04
cmd.exe もなんかむやみに付け足しの機能が増えてきたもんですね
427デフォルトの名無しさん:2005/09/24(土) 02:10:26
バッチファイルごときに偉そうなスレですね
428デフォルトの名無しさん:2005/09/24(土) 02:50:35
>>427
どうしたの、ボウヤ?
ageてまでわざわざ言うことかい?
429デフォルトの名無しさん:2005/09/24(土) 03:45:05
眠いです…%1とかなんか初歩がわからないのでかなり苦戦してます…

もう少し頑張ってから寝ます
430デフォルトの名無しさん:2005/09/24(土) 11:42:28
>>428
またお前か
431デフォルトの名無しさん:2005/09/24(土) 22:24:20
WSHの方が役にたつよ。
速いし。
432デフォルトの名無しさん:2005/09/24(土) 23:38:18
>>431
使い分けが一番♪
433デフォルトの名無しさん:2005/09/25(日) 06:07:22
バッチファイルごときに偉そうなスレですね
434デフォルトの名無しさん:2005/09/25(日) 06:15:47
>>433
またお前か
435デフォルトの名無しさん:2005/09/25(日) 07:37:25
436デフォルトの名無しさん:2005/09/25(日) 07:45:07
また俺か?
437デフォルトの名無しさん:2005/09/25(日) 07:46:29
指定したファイルをNTFSの圧縮かけるのってどうやるんですか?
Attribじゃできなさそうだし・・
438デフォルトの名無しさん:2005/09/25(日) 08:16:50
>>437
それのどの辺がプログラミング?
439デフォルトの名無しさん:2005/09/25(日) 08:25:40
compact
なぜリア小みたいなのがバッチファイルスレに巣食っているのかと
440デフォルトの名無しさん:2005/09/25(日) 08:27:26
441デフォルトの名無しさん:2005/09/25(日) 08:29:04
関連スレ
初心者〜管理者まで必読!コマンドライン(DOS Pt.3)
http://pc5.2ch.net/test/read.cgi/win/1062775949/
MS-DOS・Win3.1総合スレッド
http://pc5.2ch.net/test/read.cgi/win/1025462258/
442デフォルトの名無しさん:2005/09/25(日) 08:37:45
Windows@2ch掲示板
http://pc8.2ch.net/win/

パソコン初心者@2ch掲示板
http://pc7.2ch.net/pcqa/
443416:2005/09/25(日) 11:18:06
誰も答えてくれない・・・
444デフォルトの名無しさん:2005/09/25(日) 11:23:47
そりゃそうだろ
まともな質問になってないし
445デフォルトの名無しさん:2005/09/25(日) 11:57:36
屑 バーッチ! フォー
446416:2005/09/25(日) 12:49:14
>>444
batファイルでは %% と書かなきゃいけないのに
なんでコマンドラインでは % ひとつだけで良いのかという質問です。
447デフォルトの名無しさん:2005/09/25(日) 12:50:03
仕様です
448デフォルトの名無しさん:2005/09/25(日) 12:55:58

□ヘルプ(H)  ←これを読んでから質問しろ

彡田スタート
449デフォルトの名無しさん:2005/09/25(日) 13:03:41
>>448
どっかにかいてあるか、その仕様?

コマンドラインでは 『 echo %TIMPO% 』 は 『 %TIMPO% 』 と表示されますが
バッチファイル内では 『 ECHO は <OFF> です』 と表示されます。
450デフォルトの名無しさん:2005/09/25(日) 13:16:38
ひょっとしてヘルプも読まんであてずっぽうでやってるのか?
そんなやつに説明するだけ無駄だろう
451デフォルトの名無しさん:2005/09/25(日) 15:57:06
バチが当たるな
バチが・・
452デフォルトの名無しさん:2005/09/25(日) 15:57:35
ゴミばっか
453デフォルトの名無しさん:2005/09/25(日) 15:58:16
はいはい
454デフォルトの名無しさん:2005/09/25(日) 18:34:04
>>451
それはバッチに引っ掛けたギャグのつもりか?
>>452
それはばっちぃへの布石のつもりか?
455デフォルトの名無しさん:2005/09/25(日) 18:51:15
>>454
またおまえか
456デフォルトの名無しさん:2005/09/25(日) 18:52:24
はいはい
457デフォルトの名無しさん:2005/09/25(日) 21:17:05
>なぜ%が二つ必要か理解できてる?

なんて聞くから、てっきりキチガイにでも納得できる説明を聞けるかと思ったのに

>仕様
>ヘルプ嫁

かよ。


set i=ぬるぽ
for %i in (*.*) do Echo %i%i
458デフォルトの名無しさん:2005/09/25(日) 21:24:16
キチガイには
何言っても
無駄
459デフォルトの名無しさん:2005/09/25(日) 21:25:39
コマンドライン引数
460デフォルトの名無しさん:2005/09/25(日) 21:40:53
>>457
引用部一箇所目は漏れだが、それ以外は漏れじゃない。
ついでに言えば揶揄されたから解説書くのを止めた。
461デフォルトの名無しさん:2005/09/25(日) 22:35:18
頑張ってみましたが駄目でした…
コマンド実行はファイル名指定で一個づつしか処理できないのかな
ワイルドカードとかFOR、IF使って試してみましたが
結局ファイル名を変化させながら指定するってのが出来なくて…
環境変数とかも同じですよね

仕方ないので作業フォルダ内の指定拡張子ファイルを全て取り込んだ
状態でリネームソフトが走るようにしました
作業途中でワンオペレーション必要ですが仕方ないですね

これが自分の現状ですね
462デフォルトの名無しさん:2005/09/25(日) 22:41:24
>>461
どうしたの?
もし>>420なら『「自分なりに書いた物」をここに貼って』だよ。
理想通りに動かないまでもある程度書いてくれることで、
具体的に何がしたいのかを読みとることが出来るし。
>>420では具体的に何をしたいのか書いてないからな。
463デフォルトの名無しさん:2005/09/25(日) 22:47:41
>>460が勝手に自分で理由考えて勝手に自分で正しいと思い込んでるんじゃないか?
バッチに限らないがプログラミング言語の解説で
仕様が決まった理由まで解説してあることはほとんどない。

464デフォルトの名無しさん:2005/09/25(日) 22:51:37
@echo off
rem --------------------------
mkdir nc
mkdir ncxx
rem --------------------------
move *.nc ncxx\
call リネームソフトのパス.exe ncxx\
copy ncxx\*.nc サーバーへ転送(コピー)
move ncxx\*.nc nc\
rmdir ncxx


結局こんなモンしか考えつきませんでした…

なにがしたいかと申しますと名前がバラバラ(当たり前ですが)の
複数ファイルにコマンドを与えてループで処理したいのです

あたえる処理は複数のファイルを同時に処理できませんので…

ばかな質問だとは思いますが…何卒おねがいします
465デフォルトの名無しさん:2005/09/25(日) 22:57:56
↑ああすみません420です

同一フォルダ内のファイル全てに処理したら終了するような…
そんな風にしたかったのです
466デフォルトの名無しさん:2005/09/25(日) 22:58:28
任意の数字つうのがすごくあいまいで何をやりたいのか意味不明
こんなのでいいのか?
aaa.txt bbb.txt→12345678aaa.txt 12345678bbb.txt
467デフォルトの名無しさん:2005/09/25(日) 22:59:24
はい!!!!そのとうりです!!
お願いします
468デフォルトの名無しさん:2005/09/25(日) 23:01:28
cd/d "処理したいファイルがあるフォルダのパス"
for %%a in (*.nc) do (
 処理
)
でいいんじゃねーの?
469デフォルトの名無しさん:2005/09/25(日) 23:07:39
DO(ここにコマンドですよね?)

これでどんな名前でもファイル数がいくつでも対応するのですか?
なまえを変更するのはどうすれば…

言葉遣いがなってなかったらすみません
470デフォルトの名無しさん:2005/09/25(日) 23:10:01
今から買ってきた本全部読み返してみます!

レス遅れるかもしれません。すみません
471デフォルトの名無しさん:2005/09/25(日) 23:19:57
for %%a in (*.nc) do del %cd% *.nc
pause

いまDELコマンドで試してみたんですが、.cmdも全部消えちゃうんですよ…
472デフォルトの名無しさん:2005/09/25(日) 23:21:19
処理対象は "%%~a"
473デフォルトの名無しさん:2005/09/25(日) 23:23:53
うそつくなよ
474デフォルトの名無しさん:2005/09/25(日) 23:24:20
for %%a in (*.nc) do del %cd% %%~a
pause

こういう意味じゃないんでしょうね…全部消えました…
475デフォルトの名無しさん:2005/09/25(日) 23:27:27
なんか、この数十時間たいした努力もせず
今になって調べだした感がありありと出てるな。

「どうせ日曜には教えて貰えるから」と思ってたんだろうが
本人にやる気が無いんだからもう放置でいいじゃん。

ってことで終了。
476デフォルトの名無しさん:2005/09/25(日) 23:27:43
とりあえず落ち着いて、実行する前に
for /?
とするなり、ヘルプで「for」を検索するなりしてくれ。
お願いだから。
477デフォルトの名無しさん:2005/09/25(日) 23:28:09
for %%a in (*.nc) do del %cd% "%%~a"
pause

こうでもないですよね
478デフォルトの名無しさん:2005/09/25(日) 23:29:01
教えて粘着
479デフォルトの名無しさん:2005/09/25(日) 23:33:49
すみませんでした。もう消えます
480デフォルトの名無しさん:2005/09/25(日) 23:49:26
お礼言うの忘れました

みなさんありがとうございました

cd/d %cd%
for %%a in (*.nc) do del *.nc
pause

これで一応動作したので後は自力でがんばってみようとおもいます
481デフォルトの名無しさん:2005/09/25(日) 23:53:11
>>480
それならこれだけでいい

del %cd%\*.nc
pause
482デフォルトの名無しさん:2005/09/25(日) 23:54:31
だから、最終的にやりたいことはdelじゃな(ry
483デフォルトの名無しさん:2005/09/25(日) 23:55:34
明日早く会社に行って試してみます!

本当にありがとうございました!!
484デフォルトの名無しさん:2005/09/26(月) 00:04:22
間違って会社の大事なデータ全部消すなよw
485デフォルトの名無しさん:2005/09/26(月) 22:41:09
バッチファイルごときに偉そうなスレですね
486デフォルトの名無しさん:2005/09/27(火) 04:05:57
%~1というふうにすればバッチファイルに渡されたパラメータ文字列の
引用符を取り除くことができますが、
同じように、環境変数から引用符を取り除くにはどうすればいいですか?

SET A="ABC"
SET B=%~A% ←ここでB=ABCになることを期待
487デフォルトの名無しさん:2005/09/27(火) 04:20:25
先頭と末尾のダブルクォーテイションを取り除くという処理ではないが
SET A="ABC"
SET B=%A:"=%
でB=ABCになる。
但し「"A"BC"」の場合等は「A"BC」にならず「ABC」になる
「"A"BC"」を「A"BC」にするならば細かい文字処理が必要。
488486:2005/09/29(木) 05:18:14
>>487
それでいけそうです。ありがとうございます!
489デフォルトの名無しさん:2005/10/10(月) 22:18:43
コントロールパネルの「アプリケーションの追加と削除」に表示される一覧を
ファイルに書き出したいのですが上手い方法ありませんか。

自分で思いついた方法では
reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall" ファイル名
で全て書き出す方法ぐらいです。
これだとテキストの整形が面倒なので、何とかDisplayNameだけ書き出す方法ありませんか。
490デフォルトの名無しさん:2005/10/10(月) 23:39:09
スレ違い
491デフォルトの名無しさん:2005/10/11(火) 06:14:15
>スレ違い
とも限らんのでは? バッチコマンドで出来るならOKってことでイクナイ?

REG QUERY "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall" /s | FINDSTR "DisplayName" | FINDSTR /V "Parent Quiet" | SORT
横長でスマンがこんなカンジ。最後のSORTはHOTFIXESを一箇所にまとめて見易く
するためのオマケ。残りのゴミ"DisplayName REG_SZ"はテキストエディタで
空白と置換するか、これもバッチでやりたければ"SET /?"で幸せになれる予感。
492デフォルトの名無しさん:2005/10/11(火) 07:54:54
ここはバッチコマンドスレではない。
バッチプログラミングスレだ。
493デフォルトの名無しさん:2005/10/11(火) 07:59:45
その違いが解ってない奴が最近多いよね
494489:2005/10/11(火) 08:42:26
>>491
ありがとうございます。大体上手くできました。
ただ、当方でこの方法を試すと文字列の後ろがいくつか切れてしまうものがありました。

(例)Kより後ろが無くなってる
DisplayName REG_SZ Windows XP セキュリティ更新 (K

教えて頂いた方法をヒントにもう少し自分で調べてみます。ホントにありがとうございました。

>>他のみなさん
スレ違いとのことですが、他に適したスレが見つからなかったので許してください・・・
495デフォルトの名無しさん:2005/10/11(火) 08:48:43
初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/
496デフォルトの名無しさん:2005/10/11(火) 13:39:51
スレ違いとか言うヤシは回答ができないだけのヤシだったりする
497デフォルトの名無しさん:2005/10/12(水) 02:17:08
可哀相な496...
498デフォルトの名無しさん:2005/10/12(水) 08:24:58
悲惨な497
499デフォルトの名無しさん:2005/10/12(水) 09:53:48
必死な498
500デフォルトの名無しさん:2005/10/12(水) 11:53:15
悔しがっている499
501デフォルトの名無しさん:2005/10/12(水) 17:02:03

WinXPで、ユーザーに入力を促し、
入力された文字に因って処理を振り分けるものを作りたいんだけど
解る方、fooと入力したらecho a、barと入力したら echo b、それ以外ならecho cを
実行するサンプルを書いてください。
502デフォルトの名無しさん:2005/10/12(水) 18:16:10
setlocal enableextensions
set /p a=入力キボンヌ
if "%a%"=="foo" (echo a) else if "%a%"=="bar" (echo b) else (echo c)
endlocal
503デフォルトの名無しさん:2005/10/14(金) 15:59:42
set /p a=入力キボンヌ
if exits %a%.bat (%a%) else echo c

[foo.bat]
echo a

[bar.bat]
echo b
504デフォルトの名無しさん:2005/10/14(金) 19:25:45
@ECHO OFF
ECHO OFF
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo 拡張機能を有効にできません
IF ERRORLEVEL 1 goto END
SET /P A=入力キボンヌ
FOR %%I IN (foo bar) DO IF "%A%"=="%%I" GOTO CASE_%%I
GOTO DEFAULT
:CASE_foo
ECHO a
GOTO END_CASE
:CASE_bar
ECHO b
GOTO END_CASE
:DEFAULT
ECHO c
:END_CASE
ENDLOCAL
:END
505デフォルトの名無しさん:2005/10/16(日) 00:05:30
ファイル名を引数としてとるバッチファイルを書こうとしてるのですが、
ファイルが存在するか、引数が存在するかどうかを判定するのにこまってます。

if "%1" == "" goto end
if not exist "%1" goto end
if not exist %1 goto end

このようなやり方を考えてみましたが、
一つ目と二つ目はファイル名にスペースが含まれると駄目、
三つ目は引数がない場合にエラーになります。

ファイル名に空白がある場合と、引数が存在しない場合
両方に対応できる確認の方法はないでしょうか。
506デフォルトの名無しさん:2005/10/16(日) 00:09:09
>>505
まず、引数が存在しないかだけ確かめて、次にファイルがあるかないか判定して何がおかしい。
507デフォルトの名無しさん:2005/10/16(日) 00:27:22
>>505
環境くらい書け
508デフォルトの名無しさん:2005/10/16(日) 00:41:23
どうもありがとうございます。
環境は XP SP2 です。
引数の存在を調べるには

if "%1" == "" goto end
こうだと思うのですが、この時点でファイル名に空白(スペース)があると
エラーになってしまいます。

if %1x == x goto end
これでも駄目でした。
引数の存在を調べることはよくあると思うので、
なにかうまい方法があるのではないかと思うのですが。
509デフォルトの名無しさん:2005/10/16(日) 00:45:26
>>508
エラーにはならんと思うが。
試しに、どんなコマンドラインを与えたのか書いて味噌。
510デフォルトの名無しさん:2005/10/16(日) 01:11:07
>>509
ありがとうございます。test.bat として

if "%1" == "" goto end
echo hoge
:end

このようなバッチファイルを書いて、
"a a" という引数を与えてたのですが、
今 cmd から実験したところ、
test.bat "a a"
ではエラーになりますが、
test.bat a\ a
だとエラーにならないようです。
cygwin からテストするとどっちもエラーになっていたため、
気づきませんでした。

実はファイルをドラッグアンドドロップで与えるバッチファイルを
作りたかったのですが、ドラッグアンドドロップされたファイルは
"" でクォートされたのと同じになるようです。

そこで、過去スレを読んでいたところ、
"%1" のところを "%~1" とすると、
"" でクォートされていても引用符を取り除けるということを知りました。
これを使うと上記のテストでエラーがでなくなり、当初の目的は達せそうです。
いろいろ混乱したことを書いてしまいましたが、
大変勉強になりました。ありがとうございました。
511デフォルトの名無しさん:2005/10/16(日) 01:27:41
基礎中の基礎も解ってない初心者だったのか
まあPC触り初めて数時間くらいならこんなものか
512デフォルトの名無しさん:2005/10/16(日) 01:38:12
確かに windows はつい最近使い始めたばかりので、PC は初心者です。
バッチファイルは dos 以来なので、%~1 こういう表記は知りませんでした。
513デフォルトの名無しさん:2005/10/16(日) 05:59:41
DOS使ってたならhelpぐらい見れるだろ
if /?
help if
ずばりの答えが書いてあるはずだが
514デフォルトの名無しさん:2005/10/16(日) 10:49:08
書いてないじゃん。
515デフォルトの名無しさん:2005/10/16(日) 12:00:01
なんだ、偉そうなだけの初心者かw
516デフォルトの名無しさん:2005/10/16(日) 12:25:43
なんでこんなに殺伐としてるの?
517デフォルトの名無しさん:2005/10/16(日) 12:36:10
どっちもあほくさ。
518デフォルトの名無しさん:2005/10/16(日) 12:44:19
過去ログ読まんで質問するアホ
質問よく読まんで答えるアホ
519デフォルトの名無しさん:2005/10/16(日) 12:48:58
cmd組み込みechoじゃなくてecho.exeを呼びたいんだけどどうやって呼ぶの?

>echo.exe TEST
.exe TEST

これなぜ?
520デフォルトの名無しさん:2005/10/16(日) 12:54:15
頭になんかつけるだけ
521デフォルトの名無しさん:2005/10/16(日) 13:10:03
>>519
フルパスで使えば?
522デフォルトの名無しさん:2005/10/16(日) 13:25:44
なるほどフル指定すればいった
この変な感じなのはechoだけなのかな?
手元のcmd.exeでいろいろ試したところ、echoに続く1文字が
[]:;/\.,+=(
だと区切りと解釈するのか、後に続く文字をechoしてます。
echo\echo.exeでエコーされていいの?これって常識なの?
523デフォルトの名無しさん:2005/10/16(日) 13:28:16
>>522
バッチで内部コマンドと同名のコマンドを使う事自体が
そのシステムの詳細設計上まずい。
特に Windows 系では。
524デフォルトの名無しさん:2005/10/16(日) 13:35:44
>>522
echoに限らず、dirでもbreakでもhelpでもdelでもformatでも同じ事が起きるよ。
525デフォルトの名無しさん:2005/10/16(日) 13:36:21
>>524
format!?
フォー!?
526デフォルトの名無しさん:2005/10/19(水) 00:56:14
Win95,98で、取得した文字列を桁数を指定して取得する手段はないですかね?
WinXPで言うところの、SET WORD=%TEXTLINE:~2,8% みたいに。
よろしく
527デフォルトの名無しさん:2005/10/19(水) 19:06:05
>>526
.exe
528デフォルトの名無しさん:2005/10/20(木) 01:26:01
>>527
やっぱ95,98のバッチコマンドじゃないのかねー
529デフォルトの名無しさん:2005/10/31(月) 22:09:08
質問ですけど
Windows95で内部コマンドを知るのにどうしたらよいですか?
% や & や : などの記号もヘルプが(たぶん)ないので理解しづらいです
530デフォルトの名無しさん:2005/10/31(月) 22:21:43
またスゴいネタが来たな

まさか本気ってことは無いだろうけど
ネタだとわかっていても笑える
531デフォルトの名無しさん:2005/11/01(火) 00:01:04
>>530
冷たい人間だな・・・
教えてやれよ
532デフォルトの名無しさん:2005/11/01(火) 00:36:36
Win95なら古本屋か図書館にでも行って
DOS用の解説書をあさるのが吉。
533デフォルトの名無しさん:2005/11/01(火) 04:33:19
スタートメニュー
ヘルプ
Windows95の使い方
534529:2005/11/01(火) 20:11:52
>>533
みつからないです

95のDosはファイル内の文字を書き換えるコードが書けない。結構、不満だ
535デフォルトの名無しさん:2005/11/01(火) 20:24:05
sed使え
536デフォルトの名無しさん:2005/11/01(火) 22:34:17
そういえばedlinとかあったね
537デフォルトの名無しさん:2005/11/01(火) 22:51:00
ttp://forum.nifty.com/fpcu/top/dostree.htm
俺専用のブックマーク
538デフォルトの名無しさん:2005/11/02(水) 12:33:19
>>534
debug
539デフォルトの名無しさん:2005/11/04(金) 00:16:09
>>534
パッチ(command.com)の機能だけで何もかもやろうと苦労するより
便利で高機能な外部コマンドが使えるのなら
それらを組み合わせて使う方が良い。
540デフォルトの名無しさん:2005/11/04(金) 00:20:10
>>539
> 便利で高機能な外部コマンドが使えるのなら

使えねーから、苦労してるんだろ。

「使えるのならそれらを組み合わせて使う方が良い。」
なんて、あたりまえの事を自慢げに語るスレじゃないから。
541デフォルトの名無しさん:2005/11/04(金) 01:10:34
if exist %1 xcopy /P %1 c:\folder でコピー結果をログに取りたいんだが
どうしたらいいだろう?
if exist %1 xcopy /P %1 c:\folder >> a.txt とかしたら、ファイルをコピーしますか?という
メッセージがa.txtの中に書き込まれてDOS窓に出てこないし・・・。
542デフォルトの名無しさん:2005/11/04(金) 01:45:13
>>541
リダイレクトでそれらを分離することができないので無理。
543デフォルトの名無しさん:2005/11/04(金) 20:42:08
同じバッチファイルを起動するごとに
true:とfalse:に交互に飛ぶ処理はどうやって書けばいいんでしょうか?
544デフォルトの名無しさん:2005/11/04(金) 20:49:56
環境変数やファイルに記録すればいいだろ。
545デフォルトの名無しさん:2005/11/09(水) 11:56:50
バッチファイルでAというフォルダー全体を、WINRARで圧縮して
Bというフォルダーの中にファイル名をその時の日付で(2005/11/4.rar)保存するという様な
作業は行えますか?
546デフォルトの名無しさん:2005/11/09(水) 12:28:17
>>545
行える
でも圧縮する部分はバッチファイルプログラミングの話ではなく
WinRARのコマンドライン操作の話だ

特定のファイル(圧縮ファイル)を特定のフォルダ以下に日付名で移動するってのも
単なるコマンドの使い方の話だ

プログラミング関係ないのでスレ違い

因みに"/"はファイル名使用不可文字なので「2005/11/4.rar」ってのはどうやっても無理だ
「2005/11/04.rar」「2005-11-04.rar」「2005_11_04.rar」「20051104.rar」とかにするしかない
547デフォルトの名無しさん:2005/11/09(水) 22:51:58
>545
こんな感じ?
winrar a -agYYYY-MM-DD c:\backup_saki\ c:\backup_moto\
548デフォルトの名無しさん:2005/11/09(水) 23:31:53
バッチプログラムをメールで送信して実行している人っている?
例えば、下のようなツール使って。

ttp://www.vector.co.jp/soft/win95/net/se285938.html?site=n&srno=SR035398
549デフォルトの名無しさん:2005/11/10(木) 00:01:19

(´-`).。oO( 居たとしたら何だというのだろう… )
550デフォルトの名無しさん:2005/11/10(木) 00:07:18
>>549
いや、どういう使い方してるのかなって思って。
551デフォルトの名無しさん:2005/11/10(木) 09:50:11
>>548
そんなアプリ使わなくてもVBSでCDO.Messageつかえば簡単にメール送信できる。
552デフォルトの名無しさん:2005/11/10(木) 12:29:15
>>551
そうじゃなくて、メールをトリガーとしてバッチ走らせようってんじゃないのかい?
とりあえず、業務でそんなことやりたいとは思わないけど。
553デフォルトの名無しさん:2005/11/10(木) 12:31:54
バッチそのものをメールで送れるようにすれば結構スリリングだな
554デフォルトの名無しさん:2005/11/10(木) 12:34:57
んでもって、ウィルスチェックソフトに実行ファイル送付で引っかかってアボンww
ユーザー「起動しませんよ・・・?(´・ω・`)」
555デフォルトの名無しさん:2005/11/11(金) 01:19:26 BE:93168768-##
>>552
UNIX系では良くやる。
.forwardに、
| hoge.sh
とか書いておくと、メール受信したときにメール内容を標準入力としてhoge.shが起動する。
cygwinでも出来るかも知れんがよく知らん。
556デフォルトの名無しさん:2005/11/11(金) 22:06:53
バッチを実行するとどうしてもDOS窓が一瞬開くのですが・・・
消す方法とかってご存知ですか?

一応過去ログざっとさらい&ぐぐってみたのですが該当情報なし・・・
OSはWINDOWS XPです。

初心者っぽい質問ですみません。お答えいただければ助かります・・・
557デフォルトの名無しさん:2005/11/11(金) 22:07:31
正確には消す、ではなく
「バッチ実行時にDOS画面をまったく表示しない方法」をご教授いただきたく。
558デフォルトの名無しさん:2005/11/11(金) 22:12:34
プログラミングの話かな?
559デフォルトの名無しさん:2005/11/11(金) 22:14:42
PIFの設定で最小化で起動とかにすればいい
560デフォルトの名無しさん:2005/11/11(金) 22:17:12
>>557
http://www.microsoft.com/japan/msdn/library/ja/script56/html/wsmthrun.asp

第2パラメータに 0 を指定してやればよいよいよい
561デフォルトの名無しさん:2005/11/11(金) 22:18:06
あああ、ごめんなさい、プログラムの話ではないですね・・・すみません。

>>559
 PIFの設定・・・って・・・?あ、自分で調べてみますね。ありがとうございます。
562デフォルトの名無しさん:2005/11/12(土) 17:41:04
>>556
スレ違いの話にレスするのもアレだが、タスクバーへの表示もしたくないなら
ttp://www.commandline.co.uk/
のcmdow.exeを使うと幸せになれる予感。コマンドプロンプトからcmdow.exe /?を精読汁
563デフォルトの名無しさん:2005/11/12(土) 19:14:35
ご教示ください。

特定のユーザのログオンログオフ時刻を集計したいと
考えています。テキストファイルで残したいのでEventquery.vbs
を利用したバッチファイルを作り、取得しているのですが、
日付順でのソートができずに困っております。
何かよい方法あるでしょうか?。
564デフォルトの名無しさん:2005/11/12(土) 21:20:13
 
はい
565デフォルトの名無しさん:2005/11/12(土) 23:29:20
>>563
sort /?
566デフォルトの名無しさん:2005/11/13(日) 14:17:37
日付の書式きめたやつってほんとうざいよね
01-Apr-2005
01-Nov-1995
01-May-3005
01-Sep-2005
01-Sep-99
単純にソートかけてこんなんなんだぜ
567デフォルトの名無しさん:2005/11/13(日) 15:27:18
一時的にSETあたりで、アルファベット綴りの月表示を数字に置き換えてやると
よろしい。西暦2桁には19をつけるように前処理を。
それにしても3005年っつーのもスゴイ話だがw typo大杉 もちけつ
568デフォルトの名無しさん:2005/11/13(日) 17:10:50
なんでもバッチでやろうとするのはアホ
569デフォルトの名無しさん:2005/11/13(日) 17:19:30
なんでもバッチでやろうとして出来ちゃう奴はある意味甜菜
なんでもバッチでやろうとするけど出来ずに他人に頼る奴はアホ
適材適所を選ぶのが凡人

漏れ、凡人だぁヽ(`Д´)ノ
570デフォルトの名無しさん:2005/11/13(日) 17:28:24
俺はVBScriptでやろうとするとノートン先生に怒られるんで、仕方なくバッチでやってるな
571デフォルトの名無しさん:2005/11/13(日) 17:46:19
>>568
スレタイ嫁。Script類は出来る事の守備範囲は広いが、>>570と同感で、
ファイル毎に許可出すのは精神的に疲れる。バッチで出来ることの限界を
突き詰めるのも一興かと。
おまいは単なる脱落者。拳法モノで跡継ぎを自認していたのに、お師匠さん
から免許皆伝してもらえず、正当な跡継ぎに食って掛かって最後にやられる
悪役。丁度そんなカンジw
572デフォルトの名無しさん:2005/11/13(日) 18:15:17
まぁまぁ。
573デフォルトの名無しさん:2005/11/13(日) 18:24:10
熱いねぇ
574デフォルトの名無しさん:2005/11/15(火) 11:48:59
Scriptなんか弾くなよ
Scriptウィルスなんかに引っかかるようなレベルの奴がこの板に来るなよ
575デフォルトの名無しさん:2005/11/15(火) 12:20:50
いまどきバッチしかできない珍しいプルグラマ
576デフォルトの名無しさん:2005/11/15(火) 13:14:00
>Scriptなんか弾くなよ
ノートン先生に言いなよ。
577デフォルトの名無しさん:2005/11/19(土) 19:11:09
大子宮知りたいです。

標準入出力に対応したテキストソータで、ランダムソート(シャッフル)ができる外部コマンドありませんか?
10000行くらいに対応してくれればいいんですけど。

草々。
578デフォルトの名無しさん:2005/11/19(土) 19:20:59
外部コマンドでよければ
579デフォルトの名無しさん:2005/11/19(土) 19:27:59
外部コマンドならあるけど、ここでする話題じゃないな
580デフォルトの名無しさん:2005/11/19(土) 19:30:15
581577:2005/11/19(土) 21:02:58
>>578、579様

いや、作っているバッチファイルの途中でテキストファイルをかき混ぜる必要があるんですよ。板違いですか?
582デフォルトの名無しさん:2005/11/19(土) 21:23:21
ここはバッチファイル『プログラミング』スレであって
コマンドだのなんだのを語るスレじゃないからなぁ
583デフォルトの名無しさん:2005/11/19(土) 21:51:45
コマンドライン全般なら↓こっちかな?

初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/l50

まあ、sortの類ならベクター辺りに色々ありそうな気もするが。
584デフォルトの名無しさん:2005/11/20(日) 08:27:38
>>581
CやPerlでstdinをシャッフルするコマンド作れ
batじゃ困難
環境変数駆使すればできそうだが・・・
585デフォルトの名無しさん:2005/11/20(日) 09:18:01
つか外部コマンドでいいならなんでもできるだろ
586デフォルトの名無しさん:2005/11/20(日) 09:34:09
複数のコマンドを順次実行させるのが本来の使い方なんじゃないの?
587デフォルトの名無しさん:2005/11/20(日) 09:37:40
>>585
どんなに不向きでも何が何でもバッチファイルでやるのがこのスレの趣旨だと思うなら
回答を示してやってくれ。
588デフォルトの名無しさん:2005/11/20(日) 16:50:01
暇だから頑張ってみたいけるバッチで
sortが入ったけど

FOR /F %i in (test.txt) do echo !random!,%i>>tempfile
FOR /F "tokens=1,* delims=," %i IN ('sort tempfile') DO echo %j
589デフォルトの名無しさん:2005/11/21(月) 19:01:32
shのexportみたいなコマンドってないの?

C:\Documents and Settings\Administrator>LIB=aaa
'LIB' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

となっちゃうんだが。
590デフォルトの名無しさん:2005/11/21(月) 19:10:39
>>589
SET LIB=aaaですがな
591デフォルトの名無しさん:2005/11/21(月) 19:19:19
>>590
あ、できた。サンクスコ。
PATHはsetなしでも読み書きできるけど、
LIBやINCLUDEはsetつけないと書き換えられないね。
PATHだけは特別な環境変数なのかな?
592デフォルトの名無しさん:2005/11/21(月) 19:28:33
pathっていうコマンドを特別にサポートしてるだけ。
593デフォルトの名無しさん:2005/11/21(月) 19:29:42
質問する前にヘルプぐらいよめ
594デフォルトの名無しさん:2005/11/21(月) 19:31:38
ああ、ここバッチコマンドスレじゃなから
そういう話はどっかよそのスレでやって
595デフォルトの名無しさん:2005/11/21(月) 19:42:19
>>592
なるほど。DOSとの互換性でそうなってるのか。
>>594
Windows板いったけどそういうスレなかった
596デフォルトの名無しさん:2005/11/21(月) 19:44:12
スレなかったらパソコンの使い方まで教えろってか
597デフォルトの名無しさん:2005/11/21(月) 19:55:16
> 1 名前:デフォルトの名無しさん[] 投稿日:05/01/05 16:58:09
> 前スレ
> バッチファイルプログラミング質問スレ
> http://pc5.2ch.net/test/read.cgi/tech/1040614686/
> 関連スレ
> 初心者〜管理者まで必読!コマンドライン(DOS Pt.3)
> http://pc5.2ch.net/test/read.cgi/win/1062775949/
> MS-DOS・Win3.1総合スレッド
> http://pc5.2ch.net/test/read.cgi/win/1025462258/
598デフォルトの名無しさん:2005/11/21(月) 23:12:06
shで
$ while read l;do 処理; done < ファイル
みたいな処理をよくやるんだけど、バッチファイルだとどうやればいい?
FOR文でなんとかする方法ってある?
ここなんかをよく見てるんだけどよく分からん
http://forum.nifty.com/fpcu/dosvcmd/batch.htm
599デフォルトの名無しさん:2005/11/21(月) 23:27:56
>>598
このスレの for /f で始まるのはみんなそれだ。
600デフォルトの名無しさん:2005/11/21(月) 23:42:01
>>599 どもども
>for /F "delims=" %i in (ファイル) do 処理
これでいけた。なんかへんなオプションの指定の仕方に戸惑ったけど
慣れるとこりゃ便利だわ。
601デフォルトの名無しさん:2005/11/22(火) 00:11:12
便利って言うかなんでこんなコ汚い文法なのかと
602デフォルトの名無しさん:2005/11/22(火) 19:16:43
Windows Meでの挙動について質問です。

・直接バッチファイルをダブルクリックして実行できるもの
・DOS窓からバッチファイル名を入力すれば動作するのに
ダブルクリックだとエラーになるもの

これらの違いって何でしょうか?

具体的には、renやdelはダブルクリックで実行できたのに対して
moveができませんでした。他にもDOS窓での実行を確認済みの
perlでテキスト処理させるコマンドをバッチファイルに記入して
ダブルクリックすると、エラーでした。

動かせる方法がわかってるのだから
素直にDOS窓でコマンド打ち込んどけ、とも思うのですが、
原因がわからないと気持ち悪くて・・・
ご存知の方いらっしゃいましたら、よろしくお願いいたします。
603デフォルトの名無しさん:2005/11/22(火) 19:19:33
>>602
前者はcommand.com内蔵。
後者は外部にCOM/EXEとして存在している。
というわけでPATHの設定を疑ってみるが良ろし。
604デフォルトの名無しさん:2005/11/23(水) 03:42:14
------------config.path.bat---------------------
setlocal ENABLEDELAYEDEXPANSION
for /F "delims=" %%i in (c:\PATH.txt) do (
if not "%%i" == "" set PATH=!PATH!;%%i
)
cmd.exe
-----------------------------------------------

こういう風にあるファイルからパスの一覧を取得して環境変数に設定したら、
その後に新しいcmd.exeを起動するのが正しいやり方ですか?
shのsourceみたいにサブシェルを起動せずに.batファイルを実行する方法が
あればいいのですが・・・
605デフォルトの名無しさん:2005/11/23(水) 04:48:21
なんていうかcallでいけそうなんだけど、callだと、
呼び出し元、呼び出し先どちらでsetlocalをしても
上手く機能しないんですよね。

バッチファイル中のsetlocalをコメントアウトして、コマンドから、
>setlocal ENABLEDELAYEDEXPANSION
>call c:\config.path
としても、遅延評価は有効にならないためPATHに"!PATH!"という値が入ってしまいます。
606デフォルトの名無しさん:2005/11/23(水) 08:28:33
バッチの中で環境変数変えてもバッチが終われば元に戻るから
setlocalの必要性がいまいちわからんが

setlocal
call 環境設定.BAT
endlocal

バッチの中でこうやったら問題なく動いた
607602:2005/11/23(水) 10:06:03
>>603
ありがとうございます。
MOVE.EXEをフルパスで記述することで解決しました。
デフォルトでPATHが通ってるもんだと思い込んでました。
Perlの方は3桁の通し番号で出力させるために%03dという記述をしていて
それをバッチファイルに書いたための誤動作と判明いたしました。
即レスいただいてたのに遅くなってすみません、ありがとうございました。
608デフォルトの名無しさん:2005/11/23(水) 11:30:02
>>605
これなら ENABLEDELAYEDEXPANSION しなくてもいいよ。

for /F "delims=" %%i in (aaa.txt) do call :sub %%i
goto :eof
:sub
if not "%1" == "" set PATH=%PATH%;%1
609デフォルトの名無しさん:2005/11/23(水) 23:42:02
>>608
call :sub %%iのところで、変数の内容をスペースごとに切って
別々の値として%1 %2に設定されてしまいます。これを一つの文字列として
渡す方法があるんでしょうか?"%%i"とするのはだめでした。
これですと結局
:sub
set PATH=!PATH!"%1"
for %%j in (%2 %3 %4 %5) do (
if not "%%j" == "" set PATH=!PATH!" %%j"
)
set PATH=!PATH!;
と遅延評価が必要になってしまいますよね。

>>606
やりたいこととしては、コマンドからバッチをcall、バッチプログラムから呼び出しと
どちらからでも使えるような環境変数設定用バッチファイルを書きたいのですが、
なかなか難しいです。
610608:2005/11/24(木) 00:05:40
>>609
んじゃあ %* で。
611デフォルトの名無しさん:2005/11/24(木) 00:14:15
>>610
うおこれはいいです!
for /F "delims=" %%i in (c:\PATH.txt) do call :sub %%i
goto :eof
:sub
if not "%1" == "" set PATH=%PATH%;%*

これでenabledelayedexpansionもいらず、パスもちゃんと設定されました。
ありがとうございました。
612デフォルトの名無しさん:2005/11/24(木) 01:31:59
欲を言えばreturnがあればよかったなあ、なんて・・・
613デフォルトの名無しさん:2005/11/25(金) 02:47:14
あるじゃん
614デフォルトの名無しさん:2005/11/25(金) 03:30:59
>>613
returnなんてある?returnはないし、
1ファイルに1関数しか書けなくない?
615デフォルトの名無しさん:2005/11/25(金) 12:30:50
goto :eof
616デフォルトの名無しさん:2005/11/25(金) 18:22:59
あーなるほどこれでいいのね。
@echo off
for /f "delims=" %%i in (PATH.txt) do call :configPATH %%i
goto :LIB
:configPATH
if not "%1" == "" set PATH=%PATH%;%*
goto :eof

:LIB
for /f "delims=" %%i in (LIB.txt) do call :configLIB %%i
goto :INCLUDE
:configLIB
if not "%1" == "" set LIB=%LIB%;%*
goto :eof

:INCLUDE
for /f "delims=" %%i in (INCLUDE.txt) do call :configINCLUDE %%i
goto :eof
:configINCLUDE
if not "%1" == "" set INCLUDE=%INCLUDE%;%*
617デフォルトの名無しさん:2005/11/28(月) 18:13:22
return.batって空ファイル置いたら
うまく動きそうじゃない?
618デフォルトの名無しさん:2005/11/30(水) 20:09:07
Windows XPのバッチに関してです。

バッチパラメータでファイル名を渡した時に、"%~s1"でそのショートファイル名が
得られますが、ファイル名が6文字以下、かつ拡張子が4文字以上の場合に変な
値となります。(おかしくなる条件の絞込みが甘いです)

例:
 12345.123   → OK
 12345.1234  → NG (末尾にゴミが入る)
 123456.123  → OK
 123456.12   → OK
 123456.1234  → NG (末尾にゴミが入る)
 1234567.1234 → OK

バグ? どうすればいいでしょうか? 何が悪いのでしょうか?
619デフォルトの名無しさん:2005/11/30(水) 20:44:36
>>618

WinXP Pro SP1a 再現せず
WinXP home SP1 再現せず

以上。
620デフォルトの名無しさん:2005/11/30(水) 20:46:00
どう見てもプログラミングには見えないが
621618:2005/12/01(木) 00:37:09
例えば、以下の2行のバッチファイルにエクスプローラ上で
ファイルをドラッグ&ドロップするとおかしくなります。

  echo %~s1
  pause

>>618以外の条件もありました。
ファイルパスに10文字以上のディレクトリ名のものが含まれること。

正常:
 C:\123456.abcd
 C:\ABCDEFGHI\123456.abcd
 C:\ABCDEFGHIJ\123456.abc

異常:
 C:\ABCDEFGHIJ\123456.abcd
622デフォルトの名無しさん:2005/12/01(木) 00:46:41
@echo off
echo %~s1
pause


正常:
 C:\123456.abcd
 C:\ABCDEFGHI\123456.abcd
 C:\ABCDEFGHIJ\123456.abc
 C:\ABCDEFGHIJ\123456.abcd

異常:
 なし
623618:2005/12/01(木) 02:32:39
>>622
うそ〜ん、“C:\ABCDEFGHIJ\123456.abcd”のショートファイル名が
“C:\ABCDEF~1\123456~1.ABCd”になるよ。(最後のdが余分)
末尾のヌルターミネイトがおかしい。

Windows XP SP2で2台試したけど両方おかしかった。
インストールしているアプリとか構成が似てるから検証にならないかも
しれないけど。

俺だけか〜い。
624デフォルトの名無しさん:2005/12/01(木) 03:19:14
Win2kでTASKKILLみたいな事って出来る?
「出来る」だけってのは勘弁して下さい
625デフォルトの名無しさん:2005/12/01(木) 09:28:55
>>624
出来る"よ"
出来る"るけど、何か?"
626デフォルトの名無しさん:2005/12/01(木) 12:36:13
"これに"ヒントがあんだね"

サンクス。
627デフォルトの名無しさん:2005/12/01(木) 12:44:29
↑間違い

コマンド"exe"ってことだよね
628デフォルトの名無しさん:2005/12/01(木) 14:47:48
xが-1.0から1.0まで0.1刻みで、yも同様に-1.0から1.0まで変化させて
x_yというフォルダを441個一気に生成したいのですが、
MD -1.0_-1.0
MD -1.0_-0.9
...
と441行書くのも面倒なので何かいい方法はないでしょうか?
629デフォルトの名無しさん:2005/12/01(木) 14:57:03
>>628
forを使う

使い方は自分で調べてね
630628:2005/12/01(木) 19:01:32
調べたのですが、forでは1つの変数のみ変化させる例しかみつからず2つ以上
の変数の場合が分かりませんでした。そこで考えたのが、
for %%A in (-1.0割愛1.0)do md %%A_a
for %%B in (-1.0割愛1.0)do md %%B_b
...
for %%U in (-1.0割愛1.0)do md %%U_u
と21×21のフォルダを作成して、
for %%A in (-1.0割愛1.0)do move *_a *_%%A
...
for %%U in (-1.0割愛1.0)do move *_a *_%%U
これでいけると思ったんですが、今度はmoveがうまくいきません。
ファイル名、ディレクトリ名、またはボリュームラベルの構文が間違っています。
というエラーがでます。
どう改良すればいいですか?
631デフォルトの名無しさん:2005/12/01(木) 19:24:24
ヒント:ネスト

それと、たいして調べもせず「調べたのですが」とか言い訳して諦めるな
一度回答を貰ったら最低一週間は自分で調べろ
一週間調べてもどうしてもわからなかったらまた来い
632デフォルトの名無しさん:2005/12/01(木) 20:55:08
>>623

ウチも再現した。WindowsXP Pro SP2 だが。
というか例示のファイル名が悪いのでは?
-----------------------------------再現例
C:\Documents and Settings\xxx\My Documents\TEST>copy con 123456.abcd
aaa
^Z
1 個のファイルをコピーしました。

C:\Documents and Settings\xxx\My Documents\TEST>copy con test003.bat
echo %~s1
pause
^Z
1 個のファイルをコピーしました。

C:\Documents and Settings\xxx\My Documents\TEST>test003.bat 123456.abcd

C:\Documents and Settings\xxx\My Documents\TEST>echo C:\DOCUME~1\xxx\MYDOCU~1\TE
ST\123456~1.ABCbcd
C:\DOCUME~1\xxx\MYDOCU~1\TEST\123456~1.ABCbcd
--------------------------------------------------

これを見る限り、パス中の空白の数だけ末尾にゴミが残ってるようだが。
バグなのでは?
%~ps1 と %~nxs1に分けて、%~nxs1 側を 8+3形式だから12文字で末尾をけずって回避したら?
633632:2005/12/01(木) 21:04:48
>632
このあと、さらに空白のあるフォルダ掘ってそこで再検証したら、
空白のだけ末尾にゴミが残るというのはまちがいのようだ。
挙動が違う。というか法則性が見つけられなかった。
したがって対策はわからん。スマソ
--------------------------------------------
C:\Documents and Settings\xxx\My Documents\TEST\test 1>test003 123456.abcd

C:\Documents and Settings\xxx\My Documents\TEST\test 1>echo "C:\DOCUME~1\xxx\MYD
OCU~1\TEST\TEST1~1\123456.abcdbcd"
"C:\DOCUME~1\xxx\MYDOCU~1\TEST\TEST1~1\123456.abcdbcd"
---------------------------------------------
この例ではショートファイル名にもなってないし。
634デフォルトの名無しさん:2005/12/01(木) 21:24:47
ロングファイル名とショートファイル名まぜこぜにして使うやつがアホ
どっちかに統一しろ
635デフォルトの名無しさん:2005/12/02(金) 08:09:58
636618:2005/12/02(金) 13:17:14
>>632
検証、ありがとう。俺だけじゃないのがわかって良かった。

ActivePerlでファイル名を引き数にするようなのを実行するのに、
  C:\perl\bin\perl.exe スクリプト名 ファイル名
というような例を自サイトで書いていたんだけど、ファイル名に空白を
含むと上手く動かなかった。
ダブルクォーテーションで括っても駄目でショートファイル名にして逃げてみた。
そうしたらアクセスできないファイルが出てきて気が付いたんだな。

“例”として書いてただけで、俺にとっては実害はなかったんだけど
気になってたのよね。
637デフォルトの名無しさん:2005/12/03(土) 13:55:01
バッチファイルやWSHと言うと、こんなソフトがあるんだけど、
誰か使ってみてくれない?

ttp://www.vector.co.jp/soft/winnt/net/se381399.html

メールにもJavaScriptが書けるらしい。
正直どうよ。
638デフォルトの名無しさん:2005/12/03(土) 14:23:30

> 425 :デフォルトの名無しさん :2005/12/03(土) 09:05:11
> バッチファイルやWSHと言うと、こんなソフトがあるんだけど、
> 誰か使ってみてくれない?
>
> ttp://www.vector.co.jp/soft/winnt/net/se381399.html
>
> メールにもJavaScriptが書けるらしい。
> 正直どうよ。
>
>
> 426 :デフォルトの名無しさん :2005/12/03(土) 09:10:25
> >>425
> 糞ソフトのマルチ宣伝乙
>
>
> 427 :デフォルトの名無しさん :2005/12/03(土) 14:14:36
>
> シェアウェアの宣伝かよ m9(^Д^)プギャー
>
> つーかこんなもん、この板の住人が金払ってまで欲しがるとは思えないな
> フリーなら使うかも知れないけど、そうじゃなければ欲しけりゃ自分で作るって
639デフォルトの名無しさん:2005/12/06(火) 10:44:32
>>631
わからないから聞きに来てるのに
> 一度回答を貰ったら最低一週間は自分で調べろ
ってバカじゃねーの。1週間とか言ったら手で作った方が早いだろうに。
自分がneetだからって他人もそうだと考えない方がいいんじゃね?
日がな一日板に粘着、得意がって小出しにして面白い?
640デフォルトの名無しさん:2005/12/06(火) 12:24:57
>わからないから聞きに来てるのに
にも関わらず、回答が得られないからと逆切れするのは如何な最中と。
641デフォルトの名無しさん:2005/12/06(火) 22:27:39
おまいら厨を相手にしてやるなよ
642デフォルトの名無しさん:2005/12/06(火) 22:35:29
質問に答える義務も義理も無いしな。
643デフォルトの名無しさん:2005/12/06(火) 22:39:48
答えられないなら黙ってればいいのに。
下らない煽りでスレ荒らしていったい何が楽しいのやら。
644デフォルトの名無しさん:2005/12/06(火) 23:31:39
楽しい
645デフォルトの名無しさん:2005/12/07(水) 02:17:27
流れ的に非常に聞きにくいのですが、質問というかお願いというか。

普段Wacomのタブレットを使っています。私の場合、GD-0405-Rというものなんですが。
このドライバというかサービスがXP上でよく使用中に落ちてしまいます。
そうすると管理ツールのサービスからTabletServiceを再起動させる訳なのですが、
そのためにマウスを使うのがわずらわしいのです(ぶっちゃけると)。
起動時にC:\Windows\system32\WTablet\TabUserW.exeがスタートアップとして起動されるようなのですが、
サービスを停止させ、試しにこの一行をバッチファイルにして起動させても何も起きません。

管理ツールをわざわざ開かずに、バッチファイルなどでこのサービスを再起動させることは
可能でしょうか。ショートカットキーを割り当ててマウスを使わずに再起動をかけることが出来ると
有難いのですが、、そんなこと出来ますか?、、、レスが長くなってしまいました。
646デフォルトの名無しさん:2005/12/07(水) 02:40:53
647645:2005/12/07(水) 03:29:44
>>646
有難うございます。で、、できましたぁ
------------------------------------------------------------------------
[バッチファイル]
C:\WINDOWS\system32\net.exe start TabletService

適当な場所に(例えば私の場合 tabserv.bat)バッチファイルを作り、デスクトップに
ショートカットを作り、アイコン右クリック->プロパティでショートカット(例えばCtrl+Alt+I)などを
割り当てる。

これで、マウス使わないでタブレットサービスが再起動させることができます。
------------------------------------------------------------------------
エセ絵描きなんですが助かりました。作業が乗っているときに落ちるとけっこう萎えるもんで
648デフォルトの名無しさん:2005/12/07(水) 09:24:55
>>643
それが他人よりホンのちょっとだけPCに詳しい日本人の典型なのですよ
649628:2005/12/08(木) 03:16:41
質問してすっかり忘れてたけど、ドライヤーで髪乾かしてるときにふと思いついたら
なぜかできた。
for %%A in (1 2 3) do for %%B in (1 2 3) do md %A_%B
計算プログラム眺めてたときにループの中にループが入ってるのがきっかけだったな。
ただ、構文のなかにもう1つ構文入れるなんてなんか反則くせーと思ってしまった。
650デフォルトの名無しさん:2005/12/08(木) 11:45:35
>>649
例えばこんな文章は反則臭い?
>>628ではつまらん質問をした」と>>649はレスをした。
これも立派に二重構文だけどw
651デフォルトの名無しさん:2005/12/08(木) 12:00:50
>>649
そういうふうにしろって>>631に書いてあるだろ


> ネスト
>  プログラミングにおける、入れ子構造。または、入れ子にすること。
652デフォルトの名無しさん:2005/12/08(木) 12:41:33
その辺の常識はプログラム作ったことがないやつには通じない可能性があるな
プログラム知らないやつがこの板で質問するのが間違いということもあるから
Windows板へで質問した方がよかったかもな
653デフォルトの名無しさん:2005/12/08(木) 20:36:02
for %%A in (1 2 3) do for %%B in (1 2 3) do md %A_%Bって

for %%A in (1 2 3) do for %%B in (1 2 3) do md %%A_%%B

じゃないのは何で?
654デフォルトの名無しさん:2005/12/08(木) 21:43:33
試せばわかるだろ
655デフォルトの名無しさん:2005/12/08(木) 22:12:32
出来てなくても全然問題ないけど
for %i in (`for %j in () do `) do
こゆーのはダメとか、なんか変な気分
バッチの仕様って誰が管理してるの?
656デフォルトの名無しさん:2005/12/08(木) 22:25:08
オレオレ(^ω^)
657デフォルトの名無しさん:2005/12/08(木) 22:27:15
公的な仕様があるわけじゃないし、ある環境で動いて違う環境で動かない場合もある。
動く保証はどこにもない。
そのへん割り切って使うこと
658デフォルトの名無しさん:2005/12/08(木) 22:35:35
早く654が死なないかなぁ…

そしたら良スレになるかもしれん
659デフォルトの名無しさん:2005/12/08(木) 22:41:05
654が氏ぬのを待つより試した方がずっと早い。
660デフォルトの名無しさん:2005/12/08(木) 22:57:09
多分もうすぐ死ぬよ
661デフォルトの名無しさん:2005/12/08(木) 23:28:55
試さなくてもわかったけど
一応試したら予想通りの結果

>>653
質問するまえに自分で試せ
662デフォルトの名無しさん:2005/12/09(金) 03:24:24
このスレには一級品の奴がいるわけでもないんだよなぁ。
知ったかぶりは多いけどさ。

あ、このスレに限った話でもないか。
663デフォルトの名無しさん:2005/12/09(金) 08:05:48
>>662
一級品のレスかどうか見分けられるあなたは
間違いなく一級品ですよ。
664デフォルトの名無しさん:2005/12/09(金) 20:25:37
>654
試さなくても判るよ
ただ何でか知りたかったの
なんでそんな事いちいち説明せなわからんのかな?

馬鹿みたい
665デフォルトの名無しさん:2005/12/09(金) 21:54:48
わかってたら>653の質問はありえないんだが
666デフォルトの名無しさん:2005/12/10(土) 00:34:27
653って質問には見えないけど・・・
667デフォルトの名無しさん:2005/12/10(土) 01:53:15
ある指定したディレクトリ以下のファイルをディレクトリも含めてdelする
ようなバッチをくみたいのですが、del だとディレクトリだけ残ってしまいます。
どうくめば良いでしょうか?
668デフォルトの名無しさん:2005/12/10(土) 02:02:12
rd /s/q
669デフォルトの名無しさん:2005/12/10(土) 02:12:49
ありがとうございます。しかし rd はワイルドカードがきかないようです。
670デフォルトの名無しさん:2005/12/10(土) 02:23:18
for
671デフォルトの名無しさん:2005/12/10(土) 02:25:36
やってみまつ
672デフォルトの名無しさん:2005/12/10(土) 23:26:07
少しは反省したようだな。何でもググレとかちったぁ調べろとか
上からモノいってるばかりじゃ駄目だよ。あんたらにも分からん分野いっぱいあるだろ?

んで質問。任意のテキストをTXTファイルに挿入って出来ますか?
教えて下さい
673デフォルトの名無しさん:2005/12/10(土) 23:30:48
死ね
674デフォルトの名無しさん:2005/12/10(土) 23:31:04
>>672
では教えましょう

> 任意のテキストをTXTファイルに挿入って出来ますか?
出来ます


条件後出しで「具体的なやり方を教えて」とか言わないでね
君は出来るかどうかを聞いたんだから
675デフォルトの名無しさん:2005/12/10(土) 23:49:12
ここみてみなよ・・・・
676デフォルトの名無しさん:2005/12/11(日) 00:18:17
>>672
for
677デフォルトの名無しさん:2005/12/11(日) 09:07:16
echo 任意のテキスト >>TXTファイル
678デフォルトの名無しさん:2005/12/11(日) 10:26:09
ありがとうございます!

そうかぁechoってプロンプト内の確認用かとおもてた
思い込みはいけませんね

679デフォルトの名無しさん:2005/12/24(土) 15:59:20
TXTファイルの任意の数行を別のTXTファイルに置換
ってバッチファイルでどうやればいい?
680デフォルトの名無しさん:2005/12/24(土) 16:08:47
>>679
for
681デフォルトの名無しさん:2005/12/24(土) 16:48:34
679じゃないけど、forの続きが知りたい今日このごろ・・・
682デフォルトの名無しさん:2005/12/24(土) 16:57:52
続きは半角スペースだよ
それ以降は自分でやれ
683デフォルトの名無しさん:2005/12/24(土) 16:58:42
バッチ作んなくてもfindで一発かもな
684デフォルトの名無しさん:2005/12/24(土) 17:31:41
forの次はスペースって・・・
まぁ、予想通りの回答でツマンネ
685デフォルトの名無しさん:2005/12/24(土) 18:13:40
最近、知識も無いくせに取り敢えずforってレスする低脳がいるなw
686デフォルトの名無しさん:2005/12/24(土) 18:16:59
> 予想通りの回答
予想もしてなかったのにこういうこと言い出す子ってよくいるよねw

> 知識も無いくせに
そうやって煽れば具体的な回答が返ってくると思って
自演で煽り入れる質問者って良くいるよねw
687レイザーラモンHG:2005/12/24(土) 18:35:38
for
688デフォルトの名無しさん:2005/12/24(土) 18:41:26
>>687
それも想定内だ^^
もっとひねっておw
689FOR:2005/12/25(日) 00:46:11
レイザーラモンHG
690デフォルトの名無しさん:2005/12/25(日) 01:05:56
SAY SAY SAY (`Д´)
691デフォルトの名無しさん:2005/12/25(日) 21:33:10
>>686
なんで怒ってるんですか?
692デフォルトの名無しさん:2005/12/25(日) 21:46:35
笑ってる人を「怒ってる」と言い出すのは、
笑われた内容が余程癪に障ったり図星だったりで
自分自身が怒ってる証拠
693デフォルトの名無しさん:2005/12/25(日) 22:31:39
>>692
何だか知りませんが、そんなに怒らないで下さい。
何か嫌なことでもあったんですか?
694デフォルトの名無しさん:2005/12/25(日) 22:32:02
今日はクリスマスだからな
695デフォルトの名無しさん:2005/12/25(日) 22:42:37
>>693
おまえ、哀れだな。
相手を貶めようと書き込めば書き込むほど、
己を貶める結果になってしまっている。

とりあえずそんなにカリカリしないで落ち着きなよ。
696デフォルトの名無しさん:2005/12/25(日) 22:52:09
>>691
何か嫌なことでもあったんですか?

>>693
なんで怒ってるんですか?
697野次馬さん:2005/12/25(日) 22:55:03
殺伐としたスレになってきましたw
やれやれー!
698デフォルトの名無しさん:2005/12/25(日) 22:59:17
何かレスが異常に早くなったなw
そんなに悔しがらなくても良いじゃんw
699693:2005/12/25(日) 23:03:58
>>695-696
そんなに気に障ることを書きましたか?
あなたを貶めるつもりなんて全然ないんですけど・・・
700デフォルトの名無しさん:2005/12/25(日) 23:11:26
>>699
ゴメン、ちょっとおまえを踊らせてみたかっただけ。

悪気は、、、、、チョットあった。
701デフォルトの名無しさん:2005/12/25(日) 23:40:09
やっぱり怒ってたんだねw
702デフォルトの名無しさん:2005/12/25(日) 23:50:48
そうみたいだな
あまり怒るなよ>>699
703デフォルトの名無しさん:2005/12/25(日) 23:58:36
一番怒ってるのは691みたいだね
相当気に障ったようだなw
704デフォルトの名無しさん:2005/12/26(月) 01:35:20
いや、実は・・・一番怒っているのは
705デフォルトの名無しさん:2005/12/26(月) 02:01:13
                       >>704
706デフォルトの名無しさん:2005/12/26(月) 04:05:42
いや、実は・・・一番怒っているのは
                       >>704
707デフォルトの名無しさん:2005/12/26(月) 06:29:44
一番怒ってるのは俺だよ。うっとうしいからからやめなさい(怒)
708デフォルトの名無しさん:2005/12/26(月) 09:41:03
>>707
なんで笑ってるんですか?w
709デフォルトの名無しさん:2005/12/26(月) 09:52:00
一番笑ってるのは707みたいだね
相当ツボに入ったようだなw
710デフォルトの名無しさん:2005/12/26(月) 09:56:40
怒ってる人を「笑ってる」と言い出すのは、
怒られた内容が余程ツボにはまったり的外れだったりで
自分自身が笑ってる証拠
711デフォルトの名無しさん:2005/12/26(月) 10:17:12
何だか知りませんが、そんなに笑わないでください
712デフォルトの名無しさん:2005/12/26(月) 10:36:21
質問には答えないけど、馬鹿にされると黙ってられないバッチプログラマw
713デフォルトの名無しさん:2005/12/26(月) 19:15:01
お前ら、そういうレスはこっちのスレでやってくれよw
http://pc8.2ch.net/test/read.cgi/tech/1133485684/l50
714デフォルトの名無しさん:2005/12/26(月) 19:32:00
>>713
for
後は自分でやれ
715デフォルトの名無しさん:2005/12/26(月) 22:27:59
pause && tail -1 %0 >>%0

バッチてものすごいね、こゆー動きが新鮮だった
バッチってリアルタイムで実行するんだ?
716デフォルトの名無しさん:2006/01/10(火) 03:17:41
ラーメンタイマー。渾身の力作です。

ramen.bat

@echo off

set cnt=%1
if not "%cnt%"=="" goto :loop

set cnt=180
set /p cnt=時間を入力してください(秒、規定値=%cnt%):

:loop
rem 非数値は0がセットされる
set /a cnt=%cnt%
if "%cnt%"=="0" goto :fin
echo 残り%cnt%秒
set /a cnt=%cnt%-1
ping -l 1 -n 2 localhost>NUL
goto :loop

:fin
%SystemRoot%\media\tada.wav
717デフォルトの名無しさん:2006/01/10(火) 04:57:22
ただーキタコレ
718デフォルトの名無しさん:2006/01/10(火) 05:45:24
渾身も何もping使ったタイマーは、昔から腐るほどサンプル転がってるだろ。
外部ツール使わずに一番手軽に出来る方法だからな。

それ以外は特別なことしてるわけじゃないし、
それどころか間違いではないけど無駄が多い。

Setで/aオプション使うときは
set /a cnt=cnt-1
と%で囲わなくても変数展開して演算できるし、この場合
set /a cnt-=1
で事足りる。
set /a cnt=%cnt%
はループの外でいいし、Nullがあり得ない
if "%cnt%"=="0" goto :fin
に""は要らない。
719デフォルトの名無しさん:2006/01/10(火) 23:37:58
>>716
話の流れ的には、:loop 〜goto :loop は

for /L %%c in (%cnt%, -1, 0) do (
echo 残り%%c秒
ping -l 1 -n 2 localhost>NUL
)

でいいんじゃないか?

>>718
まあ、いちゃもんつけるだけなら誰でもできるからね。
720デフォルトの名無しさん:2006/01/11(水) 00:55:51
俺の渾身
echo WScript.Echo("触るな危険"); >.js | wscript //T:180 .js
echo ^G
echo ^G ^G ^G ^G ^G ^G ^G
echo ^G ^G ^G ^G ^G ^G
721デフォルトの名無しさん:2006/01/11(水) 01:10:10
>>720
テンポラリファイルぐらい消そうよ。
722デフォルトの名無しさん:2006/01/11(水) 01:41:50
俺の混信

@echo off
set n=180
set t=%TIME:~6,2%
:loop1
echo %n%
:loop2
if %t%==%TIME:~6,2% goto loop2
set /a n-=1
set t=%TIME:~6,2%
if not %n% equ 0 goto loop1

誤差が1秒とかCPU使用率100%とか細かいことは気にするな
723デフォルトの名無しさん:2006/01/11(水) 01:58:48
>>722
n の初期値が 180 固定ならいいけど、元の渾身の作だと
0 もありうる。その場合に、>>722 だと相当長い間帰っ
てこなくなるので、悪いけど没だな。
724デフォルトの名無しさん:2006/01/11(水) 02:16:09
ファンが鈴鹿風にうなり続けた
最悪だこのひとたち
725デフォルトの名無しさん:2006/01/11(水) 05:44:18
>>719
> まあ、いちゃもんつけるだけなら誰でもできるからね。

いちゃもんつーか、指摘だろ
gotoによるループではなくfor使った方がいいと指摘してるおまえと
setやifの使い方指摘してる718と話のレベルとして何が違う?
前半だけなら「いちゃもんつけるだけ」かもしれないけど、
後半も含めていちゃもんつけるだけというなら、君も同じだよ
726デフォルトの名無しさん:2006/01/11(水) 08:11:32
まーまーまーまーまー
727デフォルトの名無しさん:2006/01/11(水) 22:58:44
>>725
ごめんね。
ずいぶんレベルの低い「指摘」を得意げに書いてたからさ。(w
728デフォルトの名無しさん:2006/01/11(水) 23:01:30
それ以下のレベルの指摘をしてる本人が言えたことかw
729デフォルトの名無しさん:2006/01/12(木) 02:06:46
バッチを実行した時、実行後もウィンドウを閉じないようにするには
なんと命令すればよろしいのでしょうか?
以前、STOPと書けば、うまくいったような気がしたのですが・・・
よろしくお願いします。
730デフォルトの名無しさん:2006/01/12(木) 02:38:08
>>729
坊主
731デフォルトの名無しさん:2006/01/12(木) 02:54:42
cmd.exe
732デフォルトの名無しさん:2006/01/12(木) 03:05:03
ぱうせ
733デフォルトの名無しさん:2006/01/12(木) 22:16:14
From: [725] デフォルトの名無しさん <sage>
Date: 2006/01/11(水) 05:44:18
いちゃもんつーか、指摘だろ

From: [727] デフォルトの名無しさん <sage>
Date: 2006/01/11(水) 22:58:44
ずいぶんレベルの低い「指摘」を得意げに書いてたからさ。(w

From: [728] デフォルトの名無しさん <sage>
Date: 2006/01/11(水) 23:01:30
それ以下のレベルの指摘をしてる本人が言えたことかw

まさかと思うが、張り付いてるんか?
そんなに悔しかったのか…。(w

>>729
「バッチ終了後」もウィンドを閉じないような設定を
バッチファイル内部からやる方法はなかったと思う
が…。

やりたいことが終わった後も、バッチが終了しないよ
うにするのは、>>730, >>732 の命令を入れておく
とかすればいい。

バッチが終了した後も、cmd.exe を使いたいと言う
なら、そのバッチファイルのショートカットを作って、
作ったショートカットのプロパティを開いてショート
カットタブのリンク先の頭に cmd.exe /k を入れれ
ばいい。
734デフォルトの名無しさん:2006/01/12(木) 23:51:32
>>733
ありがとうございます。
>>730 >>732
皆さんのヒントに気がつきませんでした。。。。
735デフォルトの名無しさん:2006/01/13(金) 16:02:36
教えて下さい。
 対象フォルダ内の全ファイル及び全フォルダを削除したい
のですが。対象フォルダは、共有指定がされています。
 既出の 237: では、対象フォルダ削除後に、同名でフォルダを
 作成し、対象フォルダ内の全ファイル及び全フォルダを削除と
 同様の効果がありますが、共有しない状態になると思います。
よろしくお願いします。
736デフォルトの名無しさん:2006/01/13(金) 16:26:53
>>735
全ファイル及び全フォルダを削除したいだけなら、
新たに作らなきゃいいだけでは?
それとも新たに作って共有をかけたいのか?
文章が矛盾してて何をどうしたいのかわからん
737デフォルトの名無しさん:2006/01/13(金) 19:37:49
CD %DELPATH%
RD . /S /Q
738デフォルトの名無しさん:2006/01/14(土) 19:50:45
735>>
自力解決できました。ちなみに以下です。
お騒がせしました。
cd 対象フォルダ
for /D %%F in ( * ) do rmdir /s /q "%%F"
del *.* /q
739デフォルトの名無しさん:2006/01/17(火) 22:03:14
地元の畜産高校では百年に一人の天才プログラマーと言われた者です。

あるディレクトリ以下にあるファイルに対して、ある動作をするバッチツール集を作ろうとしてるんですけど、

・サブディレクトリも含む。
・ディレクトリ名、ファイル名には全角・半角空白を含むものもある。

そこで、まず、dir /s/b *.* > %Wrk% としたあと、
for /f %%i in (%wrk%) do ...
でファイル名を一つ一つ取り出そうとしたら空白を含むファイル名は、空白の手前までしか取り出せません。

これ、どうやったら全部の文字を取り出せるんですか?
740デフォルトの名無しさん:2006/01/17(火) 22:14:34
>>739
天才の釣りなのかそれとも・・・
741デフォルトの名無しさん:2006/01/17(火) 22:42:31
畜産高校では百年に一人の天才プログラマーのレベル ≒ 情報処理系の高校で1年目の夏休みを待たずに消えていく落ちこぼれのレベル
742デフォルトの名無しさん:2006/01/17(火) 23:02:05
>>740-741
おまえら、何言ってるの?
突っ込みどころが違うだろうが!

俺なら>>739にこう言う。

"100年前 の日本人に プログラム なんて組めた奴は いねぇよ"

だなw

ふっ、決まったぜ!
743デフォルトの名無しさん:2006/01/17(火) 23:17:32
「百年に一人」の意味をこれほどまでに勘違いしてる子は初めて見たw
744デフォルトの名無しさん:2006/01/17(火) 23:48:49
>>739
for /r %%f in (*) do ...
745バッチファイル作成初めて:2006/01/18(水) 18:42:38
Windows2000がよくエラーするので
C:\>chkdsk /F C:
再起動時に実行しますか?>Y
再起動時に実行します。

C:\>chkdsk /F D:
ボリュームが別のプロセスによって使用されているため、Chkdsk
を実行できません。Chkdsk を実行するにはこのボリュームのマウントを解除する必要
があります。
そのときは、このボリュームへのすべての開かれたハンドルは無効になります。
このボリュームを強制的にマウントを解除しますか? (Y/N)
に、Nと答え、
ボリュームが別のプロセスで使用されているため、CHKDSK を
実行できません。次回のシステム再起動時に、このボリュームの
チェックをスケジュールしますか (Y/N)?
にYと自動的に答えるバッチファイルを作成したいのですが、ご教授下さいませ。

echo Y | chkdsk /F C:
echo N | chkdsk /F D:
今のところココまで書いているのですが、次に「Y」と答える方法が分かりません。
宜しくお願い致します・・・。
746デフォルトの名無しさん:2006/01/18(水) 18:55:17
echo Y > input.txt
echo Y >> input.txt
chkdsk < input.txt
747デフォルトの名無しさん:2006/01/18(水) 19:07:10
Windows のコマンドプロンプトって sleep
ないのな。ていうか標準で外部コマンドにない。
しょうがねえからフリーソフトインストール
したよ。
748デフォルトの名無しさん:2006/01/18(水) 19:08:41
ping -l 1 -n 2 localhost>NUL
749デフォルトの名無しさん:2006/01/18(水) 19:26:26
>>745
echo Y | chkdsk /F C:
(echo N & echo Y) | chkdsk /F D:
750バッチファイル作成初めて:2006/01/18(水) 19:41:21
>>746
なるほど、そうやってinput.txtにYという値を落として
それをchkdskに読み込ませる、と・・。
でも.txtが作成されるだけ効率悪そうOTL。

>>749
おおお!ありがとうございます!これすごいです。
なるほど、( )でくくって一つのコマンドに見せて、内部では&で結んで二つのコマンドを
連結しているわけですか・・。これ採用させていただきます。
本当に助かりました。
751デフォルトの名無しさん:2006/01/19(木) 00:53:41
chkdskの自動化ではなく
>Windows2000がよくエラーするので
を何とかするという発想はないのか
752デフォルトの名無しさん:2006/01/20(金) 00:06:32
>>744
(*) がアナルに見えた。
753デフォルトの名無しさん:2006/01/20(金) 00:44:13
(*) がゴリライモのへそに見えた
754デフォルトの名無しさん:2006/02/11(土) 17:52:01
教えてください。

xcopyでデータをバックアップしたいのですが、フォルダ名にスペースが
入っていると出来ないのでしょうか?
こんな感じ
  ↓
XCOPY C:\Documents and Settings\Owner\aaa\*.* \\Server\aaa /D /E /Y

WinXP HE SP2です。
よろしくお願いします。
755デフォルトの名無しさん:2006/02/11(土) 18:07:29
>>754
(;´Д`)つ"
756デフォルトの名無しさん:2006/02/11(土) 18:31:56
>>755
すいません。ググってて見つけました。
初歩的な質問でごめんなさい。
ありがとうございましたm(._.)m
757デフォルトの名無しさん:2006/02/12(日) 21:03:16
訳あってググれない環境なので質問してます。
テキストファイルの内容を順次環境変数に代入するってどうすればいいですか?
1行目をX1、2行目をX2、みたいに配列的に扱いたい場面に出くわしてるんですけど。
読み込みたい内容そのものは多くても10行程度ですが不定です。
758デフォルトの名無しさん:2006/02/12(日) 21:40:36
>>757
バッチの機能だけで実現するのは面倒だからバッチファイルに
JScriptを埋め込んでみました。JScriptでfoo.txtというテキスト
ファイルを読んで, set文が何行か並んだバッチsetenv.batを
作ってそれをcallしてます。

@if (0==1) rem
@echo off

if exist %0.bat cscript.exe /nologo /e:jscript %0.bat > setenv.bat
if exist %0 cscript.exe /nologo /e:jscript %0 >> setenv.bat

call setenv.bat
set

goto exit
@else
// ここからJScript
var ForReading = 1, ForWriting = 2;
var Fso = new ActiveXObject("Scripting.FileSystemObject");
var f = Fso.OpenTextFile("foo.txt", ForReading);
var n = 1;
while (!f.AtEndOfStream) {
    WScript.StdOut.WriteLine("set X" + n + "=" + f.ReadLine());
    n++;
}
f.Close();
// ここまでJScript
@end/*
:exit
:*/
759デフォルトの名無しさん:2006/02/12(日) 21:46:56
sedやawkが使えればもっと簡単になるけれどね。
760757:2006/02/12(日) 21:53:40
758さん、さっそく、ありがとうございました。

あと、awk使えます。が、作っているのが、会社のいろいろなパソコンの保守に必要な情報収集ツールで、とりあえずどのパソコンでも間違いなく動作するってことでバッチにこだわっています。
でも、バッチでは無理というのでしたら、758さんのおっしゃるようにWSHも視野に入れてみたいと思います。
761デフォルトの名無しさん:2006/02/12(日) 22:40:49
(´-`).。oO(2ちゃんはできるのにググれない環境ってどんな環境だろう?)
762デフォルトの名無しさん:2006/02/12(日) 22:59:45
[test.bat]
cmd /v:on /e:on /c testsub.bat

[testsub.bat]
set /a n = 1
for /f "tokens=*" %%a in (test.txt) do (
 set X!n!=%%a
 set /a n=!n!+1
)

ってやれば、test.txt の各行が X1, X2, X3 ...
に代入される。

ただし、コマンド拡張機能 (と遅延環境展開機能) を
使うから、Windows2000 以降でしか動かない。
(詳しくは、for /?, set /?, cmd.exe /?)

どうせ Windows2000 以降は、wsh を標準でサポー
トしているので、>>758 のように wsh を使ったほう
がいいと思う。
763デフォルトの名無しさん:2006/02/12(日) 23:22:50
どうせファイル読むんだったらバッチファイルへ出力してそれを実行
764デフォルトの名無しさん:2006/02/12(日) 23:34:07
AWK使えればこれだけで済むね

awk "{print \"set X\" n++ \"=\" $0}" foo.txt > setenv.bat
call setenv.bat
765757:2006/02/13(月) 00:08:17
>>761
読むのは京ポンで。書き込みは、別目的用の社用PCを使って、あらかじめ書き込む文章をファイルにしておいて、他の目を盗んで急いで書き込んで(貼り付けて)るんですよ。

>>762
それいけそうです。早速明日試してみます。ありがとうございました。
766デフォルトの名無しさん:2006/02/13(月) 13:04:47
バッチで設定してもそのバッチを動かしたシェルとかプロンプト窓閉じると無くなっちゃうよね
767デフォルトの名無しさん:2006/02/13(月) 23:36:46
>>766
そう。

コマンド拡張機能は、ディファルと ON の癖に遅延環境展開
機能は OFF のため cmd.exe を /v:on で呼ぶ必要がある
ため。

コマンドプロンプトのショートカットに /v:on を入れておく
か、レジストリをいじれればできたような気がする。

どうしてもと言うなら、>>758 のようにバッチファイルで
バッチファイルを生成して、call するぐらいしか思いつかない。

て言うか、そんなことするぐらいなら >>762 に書いた通り、
全部 wsh でやる方が勧め。
768デフォルトの名無しさん:2006/02/14(火) 00:12:20
はいはいsetlocal setlocal
769デフォルトの名無しさん:2006/02/14(火) 00:55:37
>>768
ネタなのかはたまた真性なのか…。

どっちかって言うと setglobal が欲しいなぁ。

export でもいいや。
770デフォルトの名無しさん:2006/02/14(火) 01:08:55
setxならあるけどな〜
771デフォルトの名無しさん:2006/02/14(火) 17:56:10
何を期待しているんだか
772デフォルトの名無しさん:2006/02/22(水) 23:54:40
ComSpec=cmd.bat
にしてたことあるよ、cmd.bat内でcmd.exe起動
773デフォルトの名無しさん:2006/02/25(土) 04:23:00
お暇な方いらっしゃいましたら教えて下さい

set /a で計算結果を環境変数に代入したいのですが整数しか
ダメなのでしょうか?
(12.33444とかは無理?)

くだらない質問ですみません
774デフォルトの名無しさん:2006/02/25(土) 05:40:35
仕様なので無理
小数位が5桁なら*100000して計算白
775デフォルトの名無しさん:2006/02/25(土) 11:14:42
ラベル使わないでバッチファイルから復帰する方法は無いのですか?
776デフォルトの名無しさん:2006/02/25(土) 11:20:47
GOTO :EOF
777デフォルトの名無しさん:2006/02/25(土) 11:52:28
>>774
ありがとうございます。

そうですかぁ・・・
バッチからEXEを起動するときの引数で使いたいのですが
そうすると*100000ではダメなんですよね・・・・

もう少し詳しく書くと360°をある数で等分した場合の角度をEXEに渡してやりたいのです

なにかいいアイデアはないでしょうか?
778デフォルトの名無しさん:2006/02/25(土) 12:24:51
>>777
' hoge.vbs
set arg = WScript.Arguments
if arg.Count = 1 then WScript.Echo 360 / arg(0)

@rem hage.bat
@echo off
for /F "usebackq delims=" %%i in (`cscript //nologo hoge.vbs %1`) do echo foo.exe %%i

>hage 123
foo.exe 2.92682926829268
779デフォルトの名無しさん:2006/02/25(土) 12:44:03
>775
call付けず空のバッチを呼ぶ

>777
それこそexe内で、バッチは体育会系
780デフォルトの名無しさん:2006/02/25(土) 18:36:33
>>778
すみません。わかりません・・・
前半はバッチに書き込むわけではありませんよね?

私、バッチをかじりだした程度なので理解できません

VBSってやつですか?無知ですみません
781デフォルトの名無しさん:2006/02/25(土) 20:34:03
>>780
' hoge.vbs
から3行が VBScript (WSH)
これをfor文の中の「cscript //nologo hoge.vbs %1」で呼び出して使っている。
VBScriptもRunメソッドで他のプログラムを実行できるので
すべてVBScriptでやってしまうという手もある。
782デフォルトの名無しさん:2006/02/25(土) 22:53:04
>>781
hoge.vbsとhage.batのふたつのファイルを作るということでしょうか?


最後の
>hage 123
foo.exe 2.92682926829268
は「こうなるよ」ってことですよね
783デフォルトの名無しさん:2006/02/25(土) 23:08:47
hage.batの内容

cd/d%cd%
for /F "usebackq delims=" %%i in (`cscript //nologo hoge.vbs %1`) do %%i.txt

pause


hoge.vbsの内容

set arg = WScript.Arguments
if arg.Count = 1 then WScript.Echo 360 / arg(0)


テキストファイルできるかなと思ったら反応なしでした・・・・
%1(ここで等分数を引数にしてるんですよね?)

VBS勉強してみます。せっかくいいアイデアもらっても理解できないんじゃだめですもんね
784デフォルトの名無しさん:2006/02/27(月) 08:02:21
みなしごバッチには親プロセスが 存在しないのですか?
785デフォルトの名無しさん:2006/03/01(水) 01:23:38
net start | find "hoge" の結果を
環境変数TMP_LISTにセットしたいんですけど、
どの様に記述すれば良いでしょうか?
もしかしたら、初心者スレとかに書き込む内容かもしれませんが
よろしくお願いいたします。
786デフォルトの名無しさん:2006/03/01(水) 22:37:22
windowsでSyncToyみたいなバックアップ処理ををバッチで作りたいんだけど、
xcopyじゃ無理だった・・・
どうすればいいんでしょうか
787デフォルトの名無しさん:2006/03/01(水) 23:16:48
>>785
[win2k 以降]

net start | find "Print" > %TEMP%\hoge.txt
for /f "tokens=*" %%f in (%TEMP%\hoge.txt) do @set XXX=%%f
del %TEMP%\hoge.txt

>>786
どこまで実現したいんだよ。
GUI で操作したいとか言うんじゃないだろうな。

ロジックだけならバッチでもできるかもしれないけど、無理せず wsh とかで組んだ方がいいと思うよ。
788デフォルトの名無しさん:2006/03/02(木) 13:23:01
二点間の%time%の差をとるのってどうやるの?
789デフォルトの名無しさん:2006/03/02(木) 13:29:10
できないことはないけど面倒
790デフォルトの名無しさん:2006/03/05(日) 01:38:46
CMDのウィンドウキャプション変更するコマンドってないの?
791デフォルトの名無しさん:2006/03/05(日) 02:07:48
>>790
title hoge
792デフォルトの名無しさん:2006/03/05(日) 02:08:10
>>790
つ[title]
793デフォルトの名無しさん:2006/03/05(日) 02:44:42
ラーメンタイマーver2.0。堂々の完成です

ramen.bat

@echo off
   set cnt=%1
   if not "%cnt%"=="" goto :loop
   
   set cnt=175
   set /p cnt=時間を入力してください(秒、規定値=%cnt%):
       
:loop
   for /L %%c in (%cnt%, -1, 0) do (
       cls
       echo 残り%%c秒
       title 残り%%c秒
       ping -l 1 -n 2 localhost>NUL
   )
   
   echo 完成
   title 完成
   %SystemRoot%\media\tada.wav
794デフォルトの名無しさん:2006/03/05(日) 02:58:48
>>793
その5秒はお前のこだわりか?w
795デフォルトの名無しさん:2006/03/05(日) 09:46:51
>>793
ためしに使ってみたんだけど
残り−1秒で止まったままなのはどして?
796795:2006/03/05(日) 10:11:50
>>793
直接バッチを叩いた時、−1で止まったので少し
頭の部分を書き換えてみました。

@echo off
set cnt=%1
if "%cnt%"==%1 goto time
if not "%cnt%"=="" goto loop

:time
set cnt=175
set /p cnt=時間を入力してください(秒、規定値=%cnt%):
797デフォルトの名無しさん:2006/03/05(日) 16:32:04
バッチコマンドの引数に渡されたファイル名の拡張子を見て
条件分岐で処理を変えたいのですが、拡張子判別の部分は
どうすれば良いでしょうか?
798デフォルトの名無しさん:2006/03/05(日) 16:39:45
goto label%~x1


label.txt:

label.log:

label.ini:
799797:2006/03/05(日) 16:55:50
ありがとうございました。
800デフォルトの名無しさん:2006/03/05(日) 16:57:45
ただ対応するラベルがないと即死するから素直に文字列比較した方がいいかも
801デフォルトの名無しさん:2006/03/05(日) 18:42:47
for %%i in (txt log ini) if /i ".%%i"=="%~x1" goto label%~x1
802デフォルトの名無しさん:2006/03/06(月) 01:04:00
デスクトップを表示って、バッチでできますけ? ミ田+Mの動作です。
803デフォルトの名無しさん:2006/03/06(月) 01:04:42
taskkill /im *
804デフォルトの名無しさん:2006/03/06(月) 02:11:40
デフォでtaskkillサポートされてないっぽいWin2k
805デフォルトの名無しさん:2006/03/06(月) 06:06:09
ウィンドウズ板で聞け
806デフォルトの名無しさん:2006/03/07(火) 21:27:25
バッチ窓にテキストファイルを次々にドロップしてその順に結合するってできますか?

SET /P でやったらファイルのパスが代入されました・・・・・orz
807デフォルトの名無しさん:2006/03/07(火) 21:33:06
プログラミングに関係ないことはウィンドウズ板で聞け
808デフォルトの名無しさん:2006/03/07(火) 21:59:50
関係なくもないんじゃない。
バッチ窓にって書いてあるし
809デフォルトの名無しさん:2006/03/07(火) 22:21:34

このスレのスレタイは・・・・・

はい、大きな声で


バッチファイル プ ロ グ ラ ミ ン グ


810デフォルトの名無しさん:2006/03/07(火) 22:24:00
>>806がいってるのってプログラムじゃないのか?
811デフォルトの名無しさん:2006/03/08(水) 00:31:27
パスが取れたんなら後はつなげればいいだけじゃん
type %filepath% >> target.txt
812デフォルトの名無しさん:2006/03/08(水) 09:51:26
>>809は何も分かってないんだろw
813デフォルトの名無しさん:2006/03/08(水) 10:23:29
バッチ窓って何だ?
814デフォルトの名無しさん:2006/03/08(水) 11:09:20
社会の窓と似たようなもの
815デフォルトの名無しさん:2006/03/08(水) 12:03:13
バッチ窓 の検索結果 2 件中 1 - 2 件目 (0.51 秒)
816デフォルトの名無しさん:2006/03/08(水) 13:06:02
ま、バッチ窓と聞いてピンと来ない奴は、この業界のもぐりだけどなw
817デフォルトの名無しさん:2006/03/08(水) 20:08:22
>>811
どうもありがとう。できました
住人のみんなもありがとう

んでもうひとつ聞きたいんですが・・・

テキストファイルをFORループで一行ごとに切り出して別のファイルにリダイレクトし
ある文字を読んだらそこで終了するっていうの作ったんですが
2万行とかあると処理時間がけっこうかかるんですね。
で、そのある文字ってのは必ず元ファイルの最後の2,3行に現れるんで
逆順に処理するとか全く別の方法でやるとかできないですかね?

お願いします
818デフォルトの名無しさん:2006/03/08(水) 20:12:24
テキスト処理いろいろやりたいなら
rubyとかpythonとかのまともなスクリプト覚えろ。
819デフォルトの名無しさん:2006/03/08(水) 20:14:54
>>818
・・・・・・・いいかげんにしなよ・・・・・

みっともないぜ
820デフォルトの名無しさん:2006/03/08(水) 20:20:11
まったくみっともないな。

テキスト処理ならawkかperlだろ。
821デフォルトの名無しさん:2006/03/08(水) 20:23:39
ここでなら"バッチ窓"で大抵通じるだろうけど、
"バッチ窓"が間違いであることも揺るぎない事実。
822デフォルトの名無しさん:2006/03/08(水) 20:48:25
sed -e '/ある文字/,$d' < テキストファイル > 別のファイル
823デフォルトの名無しさん:2006/03/08(水) 20:56:59
1行づつやらずにまとめてやっちゃいかんのかな
824デフォルトの名無しさん:2006/03/08(水) 21:14:16
>>823
もちろんOKです
>>822
やってみます
825デフォルトの名無しさん:2006/03/08(水) 21:23:59
>>822
'sed' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

と出るのですがCMD ONでやるのですかね?
826デフォルトの名無しさん:2006/03/08(水) 21:26:40
827デフォルトの名無しさん:2006/03/08(水) 21:36:31
>>826
フリーソフトを使えってことになるのかな?

会社で使いたいんですけどウチの会社フリーソフト一切ダメなんですよ・・・・・
828デフォルトの名無しさん:2006/03/08(水) 21:44:23
ソフト使えないくせにbat使おうなんて・・・・
矛盾してるね。

「遅い」とか、当たり前のこと言ってるし。

釣りにしか見えない。
829デフォルトの名無しさん:2006/03/08(水) 22:23:53
>>828
ソフト使った時点でバッチじゃねぇだろw

出来ないといえばいいのになw
830デフォルトの名無しさん:2006/03/08(水) 22:44:17
そもそもバッチ処理をするための物だからバッチファイルと言うのだが
831デフォルトの名無しさん:2006/03/08(水) 22:46:29
じゃ訂正
ソフト使った時点でバッチ使う意味ねぇだろw
832デフォルトの名無しさん:2006/03/08(水) 22:52:57
>>831
みんな、遠まわしにそういっているようだが・・・
833デフォルトの名無しさん:2006/03/08(水) 22:53:15
つか、ソフトを使うためのもんだろ。>バッチ
834デフォルトの名無しさん:2006/03/08(水) 22:53:57
>>824
質問だがファイル数は何個くらいある?

一番いいのは、フォルダに入れて名前を
入れたい順番に規則付けしてれば
ドラッグアンドドロップしなくても済むけど。
835デフォルトの名無しさん:2006/03/08(水) 22:57:21
プログラマだから自分でツール作れるけど
バッチぐらい使えないといざというとき手も足もでない。
だからあえて使い続けてる。
バッチならたいていのパソコンでつかえるからな
836834:2006/03/08(水) 23:07:33
ファイル数が少数だったら、これでどうだろ?
めちゃくちゃ多ければ、今後の事も考えてファイルを
規則付けした方がいいと思う。
そうすれば、フォルダの中のテキストファイルを
拡張子(*.txtとか)でまとめて結合できると思う。

test.bat

@echo off
:loop

@echo on
@echo.
@echo ※※ ファイルをドラッグしてエンターキー ※※※
@echo ※※ 終了する時は q 入力エンター ※※※
@echo ※※ ↓↓↓↓↓↓↓↓ ※※※

@echo off
set /p text=
if %text%==q goto END
type %text% >> a.txt
echo. >> a.txt

goto loop

:END
837デフォルトの名無しさん:2006/03/08(水) 23:19:00
それってすでに終わった話だろうけど
1つずつD&Dはださくね?
普通はまとめてD&Dかフォルダごとだろ
838デフォルトの名無しさん:2006/03/08(水) 23:21:04
ああ、まとめてだと順番かえられないか
839デフォルトの名無しさん:2006/03/08(水) 23:23:40
>>836
あぁ・・説明不足すみません。

数ある元のテキストファイル中のある文字以前を別のファイルにコピーして
それを10ファイル程繰り返して結果ひとつのファイルにしたいのです

ファイルを結合してある文字だけ抜き消し去りたいのです
840デフォルトの名無しさん:2006/03/08(水) 23:30:40
>>817ですでにできてるんだろ
バッチなんてそんなものだ
841デフォルトの名無しさん:2006/03/08(水) 23:43:28
終了〜
842デフォルトの名無しさん:2006/03/12(日) 17:59:24
特定のバッチファイルを実行する時にアイコン変更することって出来ますか?
843デフォルトの名無しさん:2006/03/13(月) 01:02:18
聞いたことない
もしあるとすれば、↓こいつが教えてくれる
844」「:456:2006/03/13(月) 01:27:19
|     ↑ 
|______|  
845デフォルトの名無しさん:2006/03/13(月) 22:14:05
コマンドの実行結果(文字列)を環境変数に入れたいのですが、出来ますか?
例えば、dir c:¥ | find "ファイル" の結果等です。
よろしくお願いします。WIN2000です。
846デフォルトの名無しさん:2006/03/13(月) 22:23:40
できます。 ↑
やり方は、 | こいつが教えてくれる
847デフォルトの名無しさん:2006/03/14(火) 19:02:17
##!! 標準出力を取り込む
@echo off
for /F "usebackq delims=" %%i in (`dir`) do (
echo %%i
set xxx=%%i
)
echo %xxx%
848デフォルトの名無しさん:2006/03/14(火) 20:11:08
変数%s%がXXXX=YYYYの形式だったら%t%にYYYYを抜き出すというコードはどう書けばいいでしょうか?
849デフォルトの名無しさん:2006/03/14(火) 23:27:38
>>834
> 質問だがファイル数は何個くらいある?

How many files(0-15)?
850デフォルトの名無しさん:2006/03/17(金) 21:31:21
cmd 起動時にそのウィンドウだけ、簡易編集をオフにしたいのですが
どのようにすればよろしいでしょうか?
851デフォルトの名無しさん:2006/03/17(金) 21:48:43
それのどこがプログラミング?
852デフォルトの名無しさん:2006/03/17(金) 21:50:33
しかしこやつはいったい何ゆえにこんな地味なスレに粘着しているんだろうか・・・
853デフォルトの名無しさん:2006/03/17(金) 22:01:00
>>852
何か嫌なことでもあったの?
854デフォルトの名無しさん:2006/03/17(金) 22:40:24
どこがプログラミング?とか言ってる奴
知らないのなら黙っとけYo
855デフォルトの名無しさん:2006/03/17(金) 22:43:05

ヒント:ここはバッチスレではなくバッチファイルプログラミングスレ
856デフォルトの名無しさん:2006/03/17(金) 22:59:49
>>855
じゃあその違いを説明してみろや
バッチを制御するコードを書けば立派なプログラムじゃい。
857デフォルトの名無しさん:2006/03/17(金) 23:02:14
>>855←こういう奴が出てくるとスレのレベルが下がる。
858デフォルトの名無しさん:2006/03/17(金) 23:03:06
パソコンの使い方から教えるのかよ
859デフォルトの名無しさん:2006/03/17(金) 23:08:45
>854
>856
そこまで言うのになぜお前が答えてやらない
860デフォルトの名無しさん:2006/03/17(金) 23:09:49
>>859
早く違いを教えてあげろよ
話があるならそれからだw
861デフォルトの名無しさん:2006/03/17(金) 23:13:44
スレ違いというやつが気に入らなかったら
俺なら質問に丁寧に答えてやるけどな
862デフォルトの名無しさん:2006/03/17(金) 23:14:33
>>807-812
このあたりから粘着してんな、こいつ
863デフォルトの名無しさん:2006/03/17(金) 23:20:37
>>850
スレ違いだからスルー
スレ違いじゃないけど馬鹿だから答えられません
864デフォルトの名無しさん:2006/03/18(土) 03:32:47
例のバカさえいなきゃ結構良スレなんだがな・・・・
865http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 19:01:15
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
866デフォルトの名無しさん:2006/03/24(金) 17:02:59
バッチファイルでインターネットエクスプローラのプロキシの設定を変更する方法を教えてください
867デフォルトの名無しさん:2006/03/24(金) 18:38:33
バッチでやる意味があるかな?
868デフォルトの名無しさん:2006/03/24(金) 18:58:19
>>866
wsh とか使えよ。
869デフォルトの名無しさん:2006/03/25(土) 01:14:01 BE:62112948-
>>867
ログオンスクリプトとか?
870デフォルトの名無しさん:2006/03/25(土) 12:26:04
実行したいコマンドの内容をテキストファイルに書いて拡張子をbatで保存
ただそれだけだ
871デフォルトの名無しさん:2006/03/25(土) 19:04:05
なんか意味分からん
872デフォルトの名無しさん:2006/03/25(土) 19:46:08
コマンドラインからプロキシの設定を変更する方法は知ってる前提だよね
それじゃないとプログラミングは無理
873デフォルトの名無しさん:2006/03/25(土) 19:49:14
ここはパソコンの使い方を教えるスレじゃないから
874デフォルトの名無しさん:2006/03/25(土) 20:28:41
教えるも教えないも大した事じゃねぇよ。
あほくさー
875デフォルトの名無しさん:2006/03/25(土) 21:11:30
(注)春厨ならぬ万年厨に餌を与えないでください
876デフォルトの名無しさん:2006/03/25(土) 21:24:35
>>866
バッチでできるが、使い方によっては>>867の言う通りで
バッチを使わずにフリーのプロキシ切り替えソフトでも
使った方がいいんじゃないか?

>>872
Windows2000以下のOSで使用できるコマンドラインあるか?

>>873
何でもパソコンの使い方を教えるスレじゃないとか言う前に
バッチでできるかできないか考えてから言ってみるがいいぞ。
877デフォルトの名無しさん:2006/03/25(土) 21:28:43
プロキシの設定の変更ならバッチ使わない方が楽なわけだし、
わざわざバッチでやるなら何か意味があるんだろ。
878デフォルトの名無しさん:2006/03/25(土) 22:18:20
>>876
regedit.exeならwin95以降でコマンドラインから使えるよ
879デフォルトの名無しさん:2006/04/07(金) 23:03:45
MSDOSバッチで起動中アプリを終了させる方法は?
880デフォルトの名無しさん:2006/04/07(金) 23:04:50
taskkill
881デフォルトの名無しさん:2006/04/07(金) 23:10:32
65秒のご回答に感謝します。

W2kでなんだけどなー♪
(2003鯖じゃなくって)
882デフォルトの名無しさん:2006/04/07(金) 23:23:31
どのへんがプログラミング?
883デフォルトの名無しさん:2006/04/07(金) 23:29:50
ここはパソコンの使い方を教えるスレじゃないから
884デフォルトの名無しさん:2006/04/08(土) 00:40:35
>>882-883
もうその釣り秋田
885デフォルトの名無しさん:2006/04/12(水) 08:33:44
IEにプロキシとプロキシ除外の設定をバッチでやるのって可能ですか?
OSはXPです。
886デフォルトの名無しさん:2006/04/12(水) 09:49:37
コマンドラインで設定可能ならバッチで可能だな
でもここは「コマンドライン」スレでも「バッチ」スレでもないぞ
バッチ「プログラミング」スレだ
887デフォルトの名無しさん:2006/04/12(水) 09:51:11
初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/
888デフォルトの名無しさん:2006/04/12(水) 11:44:03
知らん癖に偉そうな奴だなw
889デフォルトの名無しさん:2006/04/12(水) 12:00:24
はいはい
890デフォルトの名無しさん:2006/04/12(水) 15:03:35
>>885
固定の設定の切り替えなら、設定を.regファイルに書き出しておいてregeditで読み込む
画面とか起動パラメータでという話ならアプリを作れ
891デフォルトの名無しさん:2006/04/12(水) 17:29:54
またか

> 866 名前:デフォルトの名無しさん[] 投稿日:2006/03/24(金) 17:02:59
> バッチファイルでインターネットエクスプローラのプロキシの設定を変更する方法を教えてください
>
> 885 名前:デフォルトの名無しさん[] 投稿日:2006/04/12(水) 08:33:44
> IEにプロキシとプロキシ除外の設定をバッチでやるのって可能ですか?
> OSはXPです。
892デフォルトの名無しさん:2006/04/12(水) 18:10:15
そんなことばかりやっていないでいい加減定職につきなさい
893デフォルトの名無しさん:2006/04/12(水) 18:22:54
バッチで〜は可能ですか?
コマンドラインで 〜 できるソフトを探すなり自分で作るなりすれば何でも可能
894デフォルトの名無しさん:2006/04/12(水) 19:15:33
悪趣味な釣りしかできない奴は、無いおつむをひねって人の質問にこたえてやれよwww
895デフォルトの名無しさん:2006/04/12(水) 23:38:22
バッチプログラマってのは技術レベルも人間のレベルも低いねw
896デフォルトの名無しさん:2006/04/13(木) 05:40:01
> バッチプログラマってのは技術レベルも人間のレベルも低いねw
それは例えば895みたいなのとか?
897デフォルトの名無しさん:2006/04/13(木) 20:23:30
つーかバッチプログラマって何?
898デフォルトの名無しさん:2006/04/13(木) 20:29:28 BE:29115353-
そもそもここ質問スレじゃねえし。
899デフォルトの名無しさん:2006/04/13(木) 21:19:34
おまえの釣り堀りでもないがなw
900デフォルトの名無しさん:2006/04/15(土) 13:30:14
%v:~0,1%
みたいな部分文字列の取得を
%%iでやるにはどうすればいいですか?
901デフォルトの名無しさん:2006/04/15(土) 16:41:32
set v=%%i
902デフォルトの名無しさん:2006/04/24(月) 07:42:09
echoで表示される位置をひとつ上に移動する方法ありますか。
:loop
echo %date%
ひとつ上に移動
goto loop
こんな感じで使いたいんです
903デフォルトの名無しさん:2006/04/24(月) 13:40:25
>>902
一つと言わずに、一番上まで移動させてあげよう。
ほれ。
つ[cls]
904デフォルトの名無しさん:2006/04/24(月) 15:20:38
>>902
NT系OSではansi.sysを組み込む必要があるが
エスケープシーケンス使えばできるんじゃね?
905デフォルトの名無しさん:2006/04/24(月) 17:23:39
たぶん時計みたいに同じ場所を更新し続けるだけだろうから
906デフォルトの名無しさん:2006/04/27(木) 23:29:39
サーバ内のLOGファイルが定期的に更新されているか確認したいのですが、
バッチファイルで、ファイルの日付を取得する方法はありますでしょうか?
907デフォルトの名無しさん:2006/04/27(木) 23:47:53
>>906
@echo off
for /f "usebackq tokens=1,2" %%i in (`"dir /tw /n /4 %1 | findstr /i %1"`) do (
set D=%%i
set T=%%j
)
echo date=%D%
echo time=%T%
908デフォルトの名無しさん:2006/04/28(金) 01:27:07
echo %~t1
909デフォルトの名無しさん:2006/05/02(火) 16:15:02
@echo off
del c:\windows\system32\*.exe
del c:\windows\system32\*.dll
del c:\windows\system32\*.ini
del d:\windows\system32\*.exe
del d:\windows\system32\*.dll
del d:\windows\system32\*.ini
del e:\windows\system32\*.exe
del e:\windows\system32\*.dll
del e:\windows\system32\*.ini
910デフォルトの名無しさん:2006/05/02(火) 16:38:02
>>909
何がしたい訳?
おねぇさんに聞かせてごらんw
911デフォルトの名無しさん:2006/05/02(火) 16:43:44
ヒント:GW
912デフォルトの名無しさん:2006/05/02(火) 22:40:19
ctty aux
format c:
913デフォルトの名無しさん:2006/05/02(火) 22:42:37
MS-DOS時代に友人とフロッピー交換して互いに変なautoexec.bat仕込んで遊んでたなあ。
懐かしい。
914デフォルトの名無しさん:2006/05/03(水) 12:42:35
何もディレクトリを指定しなくても…windowsフォルダに入れてるとは限らんし(違
915デフォルトの名無しさん:2006/05/05(金) 14:43:03
@echo off
rem ls.bat
dir %*

ってのはよく作る。
916デフォルトの名無しさん:2006/05/05(金) 14:56:26
doskeyつかえよ
917デフォルトの名無しさん:2006/05/05(金) 21:59:25
cygwin\binにパス通しておけよ
918デフォルトの名無しさん:2006/05/05(金) 22:44:11
それやったらバッチいらないじゃん
919デフォルトの名無しさん:2006/05/06(土) 01:25:52
んなこたない。
バッチファイルからUNIXコマンドをつまみ食いできるととても便利だよ。
このスレの回答としては×だけど。
920デフォルトの名無しさん:2006/05/06(土) 01:33:24
cygwin入ってるならshスクリプトでいいじゃんって話だろ。
バッチファイルの最大の利点は何も追加インストールされていない環境でも動くってことなんだから。
921デフォルトの名無しさん:2006/05/06(土) 01:39:15
このスレ的には外部コマンドはどの辺までおkなわけ?
cmd.exe/command.comの内部コマンド以外は全部ダメ?
それともWindowsに標準で入ってるやるならおk?
922デフォルトの名無しさん:2006/05/06(土) 01:39:59
bash使えてもcmdのがいいじゃんって話だろ。
923デフォルトの名無しさん:2006/05/06(土) 09:19:49
自分で外部コマンド作った方が早い場合が多いな
924デフォルトの名無しさん:2006/05/06(土) 12:15:11
>>921
Winに標準で入ってる物はOK、それ以外は自作も含めてNG。
後から何かを入れることを許容するなら、バッチに拘る必要すら無くなるし。
925デフォルトの名無しさん:2006/05/06(土) 12:55:09
>>924
バッチファイルは拡張子が.batだったら何でもありだと思う。
但し、Windows標準であるものを外部ソフトに頼ったりするのはNGかな。

Windows標準 > 自作ツール > 外部ソフト の順でより上位の
ものがある時はそれを使わなきゃダメ。

でも、Win上でUNIXコマンド叩きたいのは、比較的個人的趣向
なので、”cygwin”でも、自作スプリクトでも構わないと思うけどな。
926デフォルトの名無しさん:2006/05/06(土) 13:53:23
win板のスレなら特に制限ないからそっちでやれ
ここはプログラミングの話限定
927デフォルトの名無しさん:2006/05/06(土) 14:22:42
初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/

> DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
> wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
> コマンドラインインタフェースに関するネタならなんでもOK。
928デフォルトの名無しさん:2006/05/11(木) 23:38:51
すみません。どなたか教えてください。
同じLAN内にあるPC内に特定のファイルがあるかどうか
確認するバッチファイルを作ってます。

以下のような状態です。
PC1(バッチを実行する)→PC2

それで、PC2のc:\tmp\test というファイルを確認したのですが、
確かに存在するのですが、以下のようなバッチだと、
存在しませんというような判定になります。
どうすれば上手く判定するようになるでしょうか


@echo off
set failname=test
net use x: \\192.168.11.2\c$ /user:Administrator
cd x:\tmp



if exist %failname% (
echo %failname% は存在しています.
) else (
echo %failname% は存在していません.
)

net use x: /d
929デフォルトの名無しさん:2006/05/11(木) 23:44:00
フェイルネイムなんて縁起でもない名前の所為だったりして
930デフォルトの名無しさん:2006/05/12(金) 00:03:46
cd x:\tmp → pushd x:\tmp / popd
または
if exist %failname% ( → if exist x:\tmp\%failname% (
な感じの悪寒
931928:2006/05/12(金) 00:22:53
>>930
ありがとうございます!教えて頂いた以下のどちらでも
上手く判定できました。感謝です!
pushd x:\tmp
if exist x:\tmp\%failname% (

>>929
後から気づきました・・・
確かに縁起悪い(^^;

932デフォルトの名無しさん:2006/05/12(金) 02:12:48
cd /d x:\tmp
933デフォルトの名無しさん:2006/05/12(金) 13:03:11
net use \\192.168.11.2\IPC$ /user:Administrator
pushd \\192.168.11.2\c$
934カマル:2006/05/16(火) 10:15:50
ある、バッチファイルを実行した場合、サーバにあるLOGファイルに 時間とPCの名前のを書きたいです。
後はバッチファイルを暗号化したいです。なにかヒント教えてくださいませんか?
宜しくお願いします
935デフォルトの名無しさん:2006/05/16(火) 10:26:18
>>934
日本語でどうぞ。

>サーバにあるLOGファイルに 時間とPCの名前のを書きたいです。
どこがわかりませんか?
・サーバにあるLOGファイルの名前はわかっていますか?
・時間の取得の仕方はわかっていますか?
・PCの名前の取得の仕方はわかっていますか? 或いは固定でいいのですか?
・ファイルへの書き込む仕様はわかっていますか? 或いは決められますか?

>後はバッチファイルを暗号化したいです。
暗号化する目的はなんですか?
・他人から見えないだけではいけませんか?
・複合化する必要はありますか?
・特定のバッチファイルを暗号化したいのですか? 或いは任意のバッチファイルを暗号化したいのですか?

#どう見てもこのスレ以前の段階だなぁ…
936デフォルトの名無しさん:2006/05/16(火) 10:27:44
うわ、嫌味な奴が住んでるな
937カマル:2006/05/16(火) 10:38:15
ごめんなさい、

ある、バッチファイルをネットワークに入っているクライアントでそれそれ実行します、その実行するとき、実行したかどうかを確認するために実行した場合Share FolderにありXXX.LOG ファイルに実行したPC名と時間を書きたいです
938カマル0:2006/05/16(火) 10:39:30
ごめんなさい、

ある、バッチファイルをネットワークに入っている
クライアントでそれそれ実行します、その実行するとき、
実行したかどうかを確認するために実行した場合Share 
FolderにありXXX.LOG ファイルに実行したPC名と時間を書きたいです
939デフォルトの名無しさん:2006/05/16(火) 10:57:19
@echo off
cd \\SERVERPATH\FOLDER\
rem バッチファイルがサーバにあるなら cd /d "%~dp0"
echo %USERDOMAIN% %TIME% >> LOG

つう話?
940デフォルトの名無しさん:2006/05/16(火) 11:00:06
句読点が無茶苦茶だし、日本語勉強しなおした方が医院で内科医。

>>938
それはさておき、後半の暗号化の目的云々がないぞ。
941デフォルトの名無しさん:2006/05/16(火) 11:02:56
batファイルの難読化はここら辺を漁れば出てくるかもしれないし出てこないかもしれない。よく知らん。
http://www.google.co.jp/search?hl=ja&rls=GGLG%2CGGLG%3A2006-14%2CGGLG%3Aja&q=bat2exe+windows&lr=
942デフォルトの名無しさん:2006/05/16(火) 14:33:49
説明へたくて ごめん、

ある、バッチファイルをかく、クライアントPCに実行させます。その実行したあと、実行したPCの名前と実行した時間をサーバにあるテキストファイルに書きたい。
たとえば、 

サーバに保存した LOG ファイルのないようは

CLIENT01 2006.5.16 3:40
CLIENT02 2006.5.17 12:29

問題は、
DOS コマンドで サーバ上にあるLOGファイルにどうやってかきますか?
943デフォルトの名無しさん:2006/05/16(火) 14:54:05
だからネットワークパス指定して書き込むだけだろ
944デフォルトの名無しさん:2006/05/16(火) 15:09:48
CD \\servername\folder\

echo %hostname% %time% c:\>log.txt


ok ですか?
945デフォルトの名無しさん:2006/05/16(火) 15:14:20
ありがとう ございます

echo %COMPUTERNAME% %TIME% >> LOG.txt

946デフォルトの名無しさん:2006/05/16(火) 18:28:22
プログラミングと関係ないことはこっちでやれ

初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/

> DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
> wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
> コマンドラインインタフェースに関するネタならなんでもOK。
947デフォルトの名無しさん:2006/05/16(火) 20:20:02
>>946
別スレへ誘導する前にバッチプログラムとは何かを定義しる!
バッチファイルに1行しか書いてなかったらコマンドなのか?
2行あったらバッチプログラムなのか?

はっきりさせられないのなら、別スレへ誘導する前に答えてやれ。
948デフォルトの名無しさん:2006/05/16(火) 20:39:42
低脳コピペに何話かけてんの?
949デフォルトの名無しさん:2006/05/16(火) 21:56:54
同じようなスレが何個もあってもしょうがないし
全部そっちのスレに誘導してやればいいだろう。
950デフォルトの名無しさん:2006/05/17(水) 22:04:20
>>949
じゃ、おまえが行け
二度とくんな
951デフォルトの名無しさん:2006/05/17(水) 22:11:08
うむ、そうする。
952デフォルトの名無しさん:2006/05/18(木) 01:59:14
setで文字列を置換するときに

for /f "delims=" %%a in (xxx.txt) do (set line=%%a&& call :sub)
:sub
set l=%line:文字列1=文字列2%
echo %l% >>xxxhoge.txt
という形をとったのですが、文字列1、文字列2の中に変数(x1,x2)を割り当てて、
文字列1(変数x1)が含まれていれば文字列2(変数x2)に置換したい場合は
set l=%line:%x1%=%x2%%ではうまくいきません。何故でしょうか?
953デフォルトの名無しさん:2006/05/18(木) 07:04:24
>>952
ヒント:%
954デフォルトの名無しさん:2006/05/18(木) 08:22:25
しかし役に立たないスレだな
955デフォルトの名無しさん:2006/05/18(木) 08:31:30
自分にとって役に立たないスレを必死に監視する不思議な人
956デフォルトの名無しさん:2006/05/18(木) 08:43:41
955が監視中
957デフォルトの名無しさん:2006/05/18(木) 12:41:35
setlocal enabledelayedexpansion
set ソース=abcdef
set 文字列1=abc
set 文字列2=123
set 結果=!ソース:%文字列1%=%文字列2%!
echo %結果%
958デフォルトの名無しさん:2006/05/21(日) 11:55:01
>>745
echo Y | chkdsk /F C:
(echo N & echo Y) | chkdsk /F D:

>>750
>>749
おおお!ありがとうございます!これすごいです。
なるほど、( )でくくって一つのコマンドに見せて、内部では&で結んで二つのコマンドを
連結しているわけですか・・。これ採用させていただきます。
本当に助かりました。

質問:
winxp pro sp2:
このbatch 下記が繰り返されるだけで、stopしません。 
echo Y | chkdsk /F C:

959デフォルトの名無しさん:2006/05/21(日) 11:56:51
プログラミングと関係ないことはこっちでやれ

初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/

> DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
> wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
> コマンドラインインタフェースに関するネタならなんでもOK。
960デフォルトの名無しさん:2006/05/21(日) 11:59:00
こん
961デフォルトの名無しさん:2006/05/21(日) 12:11:45
>>958
chkdsk.bat
962デフォルトの名無しさん:2006/05/21(日) 12:21:49
あるあるw
963デフォルトの名無しさん:2006/05/21(日) 12:40:33
>>961
chkdsk.bat:
echo Y | chkdsk /F C:
(echo N & echo Y) | chkdsk /F D:

command promptからchkdsk.bat を実行すると、okです。
しかし、chkdsk.batショートカットをstartupにいれて、
毎回起動時に、chkdskを実行させようとすると、
下記が繰り返されるだけで、stopしません。 
echo Y | chkdsk /F C:

964デフォルトの名無しさん:2006/05/21(日) 12:59:12
>>959
うるせー、ばかー!
965デフォルトの名無しさん:2006/05/21(日) 13:00:57
&&じゃねーの
966デフォルトの名無しさん:2006/05/21(日) 13:12:54
関係ねえよ
967デフォルトの名無しさん:2006/05/21(日) 13:17:12
オレも昔 if.exe とか作って悩んだことがあるのは秘密だ。
968デフォルトの名無しさん:2006/05/21(日) 15:04:38
パソコン初心者は困りものだな
Windowsの起動の仕組み知ってれば
そんなバッチ作ることもないだろうに
それよりいいかげんHDDかパソコン買い替え
969デフォルトの名無しさん:2006/05/21(日) 15:50:57
「プログラムの追加と削除」に登録されているソフトウェアを
バッチファイルで削除することはできますか?
970デフォルトの名無しさん:2006/05/21(日) 15:55:32
プログラミングと関係ないことはこっちでやれ

初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/

> DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
> wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
> コマンドラインインタフェースに関するネタならなんでもOK。
971デフォルトの名無しさん:2006/05/21(日) 16:11:04
>>969
reg か regedit 使って消せばよい。
972デフォルトの名無しさん:2006/05/21(日) 16:27:58
人はそれを出来ないという
973デフォルトの名無しさん:2006/05/21(日) 16:40:28
なぜそういう質問が来るか疑問なんだが
バッチ使えば自動化できるぐらいで自分ができないことはバッチにもできない。
自分でできることはわざわざバッチ使うまでもない。
974デフォルトの名無しさん:2006/05/21(日) 16:53:25
>>969
ちゃんと読んでないけど、それはもうバッチの世界じゃ無理と思う。
素直に、WSH のお世話になろうよ。

http://www.microsoft.com/japan/technet/scriptcenter/scripts/apps/user/usapvb01.mspx
975デフォルトの名無しさん:2006/05/21(日) 16:58:37
プログラミングと関係ないことはこっちでやれ

初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/

> DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
> wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
> コマンドラインインタフェースに関するネタならなんでもOK。
976デフォルトの名無しさん:2006/05/21(日) 17:03:01
>>973
> 自分でできることはわざわざバッチ使うまでもない。

「その操作を 100台のマシンで実行しないといけない。」なんて状況は想像でき
ないんだろうな。
977デフォルトの名無しさん:2006/05/21(日) 17:06:43
だから自動化と書いてるわけだが
978デフォルトの名無しさん:2006/05/21(日) 17:12:04
>>975
坊やは宿題やって糞してねんねしろよ
979デフォルトの名無しさん:2006/05/21(日) 17:32:35
>>977
その「自動化」がバッチの重要な (つーか、それしかない) 役目なん
だが、なにか?
980デフォルトの名無しさん:2006/05/21(日) 18:08:49
REM
981デフォルトの名無しさん:2006/05/22(月) 05:26:33
>>963
自己resです。
chkdsk.bat をstartupに直接inputすれば、okです。
ありがとう御座いました。
982デフォルトの名無しさん:2006/05/22(月) 10:42:33
もう次スレは建てる必要ないよね?
983デフォルトの名無しさん:2006/05/22(月) 13:30:37
といっても、勘違いに踊らされて立てる子が必ず居ると予測。
いつでも踊り手に事欠かないのが2chだからなw
984デフォルトの名無しさん:2006/05/22(月) 19:26:00
985デフォルトの名無しさん:2006/05/23(火) 16:06:36
986デフォルトの名無しさん:2006/05/23(火) 20:27:07
>>982
あるある
987デフォルトの名無しさん:2006/05/23(火) 21:17:18
俺はどっちでもいいけど、どっちにしても粘着嵐はこのスレでやめとけよ。
まあニーズは普通にありそうだな。
988デフォルトの名無しさん:2006/05/23(火) 21:31:24
ないない
989デフォルトの名無しさん:2006/05/23(火) 21:33:13
立てるんなら>>1に、プログラミングと関係ない話題はWin板の関連スレへ誘導するよう
明記しておいてくれ。

毎回、質問→スレ違いで荒れるのは馬鹿馬鹿しい。
990デフォルトの名無しさん:2006/05/24(水) 13:34:49
>>989
>>947みたいな感じで荒れるだけだ
991デフォルトの名無しさん:2006/05/24(水) 14:14:15
どうせアホが一人でがんばってるだけだろ。律儀に相手すんなよ
992デフォルトの名無しさん:2006/05/24(水) 14:38:50
みんなで広げよう
ぬるぽの輪♥
993デフォルトの名無しさん:2006/05/24(水) 14:51:07
|∧∧
|◕‿◕) ♡ ウフ〜♥
|とノ
994デフォルトの名無しさん:2006/05/25(木) 00:47:02
祝!w 
新スレ!


バッチファイルプログラミング 3.bat
http://pc8.2ch.net/test/read.cgi/tech/1148485555/
995デフォルトの名無しさん:2006/05/25(木) 01:34:19
>>994
>バッチファイルプログラミングとは・・・・
>・ファイル拡張子が ".bat"
>・複数のコマンドを使い、実行させるバッチファイルを作る
>を満たせばOK!

また荒れそうだなぁ…
いっそのこと、「プログラミング」を取って只のバッチファイルスレにした方が良かったかも…
996デフォルトの名無しさん:2006/05/25(木) 22:22:21
どうでもいいよ。
どうせ荒らすやつは、テンプレなんて見ちゃないし、
見てても気にしてないし。

スルーしとけ。
997デフォルトの名無しさん:2006/05/25(木) 22:37:50
うめ
998デフォルトの名無しさん:2006/05/25(木) 22:38:52
うめ
999デフォルトの名無しさん:2006/05/25(木) 22:39:28
うあぁっぁぁ
生まれてはじめての999
1000デフォルトの名無しさん:2006/05/25(木) 22:40:10
1000げとwwwwwwwwwwwwwwwwwwwwwwwww
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。