1 :
デフォルトの名無しさん :
05/01/05 16:58:09
2
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 遅延環境展開を無効にします。
コマンド セパレータ '&&' で区切られた複数のコマンドが引用符で囲まれている場合 は、"文字列" として指定されます。また互換性の理由から /X と /E:ON、/Y と /E:OFF、および /R と /C は同じです。そのほかのスイッチは無視されます。 /C または /K が指定されている場合、スイッチの後の残りのコマンド ラインがコマ ンド ラインとして処理されます。次のルールが引用符 (") の処理に使われます: 1. 次のすべての条件に一致する場合、コマンド ラインの引用符が有効になり ます: - /S スイッチがない - 引用符が 1 組ある - 引用符の中に特殊文字がない (特殊文字は &<>()@^| です) - 引用符の中に 1 つ以上のスペースがある - 引用符の中の文字列が、実行可能ファイルの名前である 2. 最初の文字が引用符であるにも関わらず上の条件に一致しない場合は、最初 の引用符とコマンド ラインの最後の引用符が削除され、 最後の引用符のあ とのテキストが有効になります。
コマンド ラインで /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 を設定すると無効になります。 ユーザー固有の設定は、コンピュータの設定より優先されます。 コマンド ライン スイッチは、レジストリの設定より優先されます。
コマンド拡張機能には、次のコマンドに対する変更または追加が含まれています。 DEL または ERASE COLOR CD または CHDIR MD または MKDIR PROMPT PUSHD POPD SET SETLOCAL ENDLOCAL IF FOR CALL SHIFT GOTO START (外部コマンドの起動の変更を含みます) ASSOC FTYPE 詳細は、コマンド名の後に /? と入力すると表示されるヘルプを参照してください。
既定では、遅延環境変数の展開は有効ではありません。遅延環境変数の展開を有効また は無効にして 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 を設定すると無効になります。 ユーザー固有の設定は、コンピュータの設定より優先されます。 コマンド ライン スイッチは、レジストリの設定より優先されます。 遅延環境変数の展開が有効になっている場合、感嘆符を使うと実行時に環境変数の 値を置き換えることができます。
既定では、ファイルおよびディレクトリ名補完機能は有効ではありません。ファイル 名の補完機能を有効または無効にして 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)。 ユーザー固有の設定は、コンピュータの設定より優先されます。 コマンド ライン スイッチは、レジストリの設定より優先されます。
/F:ON スイッチで補完機能を有効にした場合、2 つの制御文字 (Ctrl-D はディレクト リ名補完機能、Ctrl-F はファイル名補完機能) が使用されます。 レジストリで特定の補完文字を無効にするには、制御文字として有効でないスペース (0x20) の値を使用します。 2 つの制御文字のどちらかを入力すると、補完機能が起動されます。パスが存在しな い場合、プログラムはカーソルの左側のパス文字列にワイルド カード文字を付加し、 一致するパスの一覧を作成します。その後一致する最初のパスを表示します。 パスが一致しない場合、音を鳴らします。同じ制御文字を押し続けると一致するパス の一覧を順に表示します。Shift キーを押しながら制御文字を押すと一覧を逆回り表 示します。行を編集して制御文字をもう一度押すと、保存されていた一致したパスの 一覧は破棄され、新しい一覧が作成されます。ファイル名補完機能とディレクトリ名 補完機能を切り替えたときも同様です。2 つの制御文字の違いは、ディレクトリ補完 文字がディレクトリ名だけを照合するのに対し、ファイル名補完文字はファイルと ディレクトリ名の両方を照合する点です。ファイル補完機能が内部ディレクトリコマ ンド (CD、MD または RD) に使用された場合、ディレクトリ補完機能と見なされま す。 一致するパスの前後に引用符を付けると、補完機能コードでスペースまたはほかの特 別な文字を含むファイル名が使用できるようになります。また、行の前に戻って補完 機能を起動した場合、補完機能が呼び出された時点でカーソルの右側にあったテキス トは破棄されます。
>>1 乙
質問するときはWindowsのバージョンを教えてね
12 :
デフォルトの名無しさん :05/01/12 00:23:00
現在の日付をyyyy-mm-ddという書式で取得したいのですが どのようにすればよろしいでしょうか? 環境変数%DATE%だと、yyyy/mm/ddという書式になってしまいます。
>>13 ありがとうございます。
%DATE:/=-%
で出来ました。
15 :
301 :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というファイルに格納する事を思いつきましたが、
逆にファイルから変数に入力する方法が分かりませんでした。
日付の概念で昨日を算出するか、ファイルから変数への入力方法を探しています。
>>15 バッチファイルを生成して、そいつをcallしたら?
後で暇見て試してみるか。
>>15 日付の概念で昨日を算出した方がスマートな気がするが、
まあ簡単なファイルを環境変数に代入する例として書いておくか。
for /F %%i in (today.txt) do echo %%i
これで、today.txtの内容が環境変数iに代入される。
正確にはtoday.txtの1行目がiに代入されechoされ、
次に2行目がiに代入されechoされ・・・と
全行に対してecho(doの後のコマンド)が実行される。
バッチファイルではなく、コマンドラインから実行するときは%%でなく%にすること
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を実行したいのですが、方法が分かりません。 誰か分かる人がいれば教えて下さい。お願いします。
>>19 こんなもんでヒントになるかな。
@echo off
set PING=NG
for /F %%i in ('ping 127.0.0.1') do if %%i==Reply set PING=OK
echo %PING%
早く.NET時代の新シェルできないかな・・・
>>11 のふたつめ
Command1 && Command2
&& 記号の前にあるコマンドが正常に終了した場合にのみ、この記号の後の
コマンドを実行するために使います。1 つ目のコマンドが実行され、そのコマン
ドが正常に終了した場合にのみ、2 つ目のコマンドが実行されます。
pingで反応が無くてもエラーレベルは0なので&&は使えませんが何か?
> 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
おかしいなぁ。うちではこう表示されるけどなぁ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
OSは? >24はXPProSP2
かぶった・・・
何かちょっと見ない間にレスが!半分諦めかけてたので嬉しいです。
今は帰宅しているので明日にでも頂いたヒントを元に色々とやってみます。
有難うございます。
ただ
>>20 がイマイチ理解できない自分が情けないorz
('ping 127.0.0.1')にあて先のIPを入れるって理解で良いのでしょうか?
ヘボですみません
31 :
301 :05/01/14 11:49:46
>>15 で質問したものです。
>>17 的確な回答有り難うございます。
FORは確かに使えますね。
>>18 ジャストミートな資料の提示、有り難うございます。
まさに求めていたものですが、
やはりというか日付の処理は全部記述していますね・・・。
DOS派なのでバッチなんですが、こういう時はwshに心動かされますね。
両方試行錯誤してみたいと思います。
形になったらまた報告しに来ますねー。
32 :
301 :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でコピーしないファイルを指定することは できますが、コピーしないディレクトリを指定することって できますか?
ファイルと同じようにディレクトリを指定すれば普通にできる。 つーか、どうやったらできなかったんだ?
35 :
デフォルトの名無しさん :05/01/17 22:33:45
バッチファイルを右クリックして編集をクリックした時パスワードを要求するソフトありますか?
NTFSの暗号化使え
>>36 OSはXP
でも奴はフロッピーの中に入ってる。
つまりフロッピーの中のバッチファイルのソースを作業員に見せたくない。
>>37 大量のコメントで迷彩掛けるとか。
さもなくば、アーカイバーの自己展開機能で実行させるとか。
Winntでipアドレスを変更するバッチファイルを作りたいんだけど Win2000のnetshみたいなのはありますか?
40 :
デフォルトの名無しさん :05/01/21 04:41:49
タスクが有効か無効かを自動でチェックする仕組みってなんかありますか? 今は、手作業で ・デスクトップにつくってあるタスクフォルダショートカットをダブルクリック ・目視確認 なんすけど、自動化できるんじゃねーのかなーーと思って。
ps -efW | find "Explorer" || Explorer
echo A>test.txt echo B>>test.txt echo C>>test.txt と書いたバッチファイルを運用して一ヶ月程したら test.txtの中身が A C B C となってしまいました。今までは正常に A B C となっていたのですが、原因としてありそうなことがありましたら教えて下さい。
バッチを別プロセスで同時に走らせたらそうなるかもな
>>43 なるほど。思い当たる節があるので調べてみます。
ありがとうございました。
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したらそのファイルを対象に、という感じに出来れば更に幸せになれそうです。
>>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製ライブラリ)でできねーもんかね。
フォルダD&Dでフォルダ内の全ファイル @echo off (%~d1) && (cd %1) for %%f in (*) do echo %%f pause
>46 どうもです。 > ファイルなら > \hoge.exe %* これをやると「渡せる引数の数はファイル名の文字数によって変わる」という制限があるので それを解消するのが目的です。 >48 どうもです。フォルダの場合はこれで完璧です。 ファイルの場合とフォルダの場合の条件分岐はなんとか自分で書くので 複数のファイルがD&Dされた場合も>48のように処理する方法が解る方、どうかアドバイスよろしくです。
>>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
>50 どうもです。 で、フォルダの場合はOKなんだけど、ファイルの場合がダメ。 でよく考えたらbatに大量のファイルをD&Dした時点でコマンド文字数オーバーしてるんだから batの内部処理をどう振り分けようと無駄だということに気付いた。 10個程度のファイルをD&Dすれば正常に動作するので46氏の記述には全く問題は無いと思う。 1ファイル当たり半角英数20文字程度のパスを持つファイルを3000個くらい一気にD&Dするのは やっぱり無理なんだろうな。フォルダ内の一部のファイルのみを処理する場合は 別フォルダに振り分けてからフォルダごとD&Dで対処するようにします。 46氏、48氏にはお手数をお掛けしました。フォルダの処理をする方は有効に活用させていただきます。
CHOICEが見つかりません!
どうもサーバーにリモートログインしているとサーバー側でのバッチと リモート側でのバッチが同時に実行されるようです(確証はありませんが)。 あるプロセスが実行中は別プロセスが実行できないような方法ありませんか?
XPのcmdがなぜか英語キーボード扱いになってしまってしまったのですがどうやって直せばいいんでしょうか? cmd以外は普通に入力できているんですが。
Win98で起動時にrouteを通すべく、スタートアップに拡張子batで保存したのですが、 実行時にショートカットが作られてしまうようで、2回動いてしまいます。 すっきり動かすにはどうすればよいのでしょう?
58 :
デフォルトの名無しさん :05/01/26 00:05:36
ログを大量にUPするバッチをつくりたいのですが 3秒間隔とか時間差を行うときのバッチの処理がわかりません どういう感じで処理するかこのあたりだけおしえてください できれば、ソースをかいてくださいおねがいします
sleep 3000
60 :
デフォルトの名無しさん :05/01/28 03:37:46
てか超ガイシュツじゃね?
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 のも試してみましたがダメでした。
>>63 恥ずかしながら同ディレクトリにping.batってのをおいてました。有難うございます。
バッチで使えるお勧めの圧縮ソフト教えてよ
Thanks.
cabarc
70 :
デフォルトの名無しさん :05/02/01 17:19:00
コマンドfooが呼び出し可能かどうかで分岐することって出来ますか? 実行して実行できなかったら、ではなく前もって知りたいんですが。
パスにファイルが存在するかチェックなら可
pathとpathextをばらしてwhich自作ですか・・・ %path%を ; で区切るのってどうやるんでしょう。 for /f "delims=;" %%q in (foo;bar bar;baz) do ( だとfooが見つかりませんというエラーになってしまいます。
74 :
デフォルトの名無しさん :05/02/04 22:14:36
バッチからJavaプログラムを起動し、 戻ってきたERRORLEVELの値をechoで表示させています。 (正常なら0、異常なら-1が戻る) 普段は普通に0や-1が表示されるのですが、 たまにプログラムが突然終了して、 ERRORLEVELに「143」というわけのわからない値が入ってくるので困ってます。 %ERRORLEVEL%の値からエラー内容を知ることはできますか? (もしスレ違いなら適切なスレへ誘導していただけると嬉しいです)
>>74 それはそのJavaのプログラムのソース次第だろ。
ソースを143で検索するかそのプログラムリリースしたところに聞くしか。
76 :
デフォルトの名無しさん :05/02/05 03:01:33
誰かバッチファイルで面白いアドベンチャーとか作れよ。
中身が丸見えじゃないか
>>75 ソース次第ですか。ありがとうございました。
80 :
デフォルトの名無しさん :05/02/08 11:44:41
あるbatファイルをatコマンドを利用して定期的に稼動させています。 定期的とは例えば毎週月曜日の12:00,火曜日の11:00などです。 しかしこれらの指定する時間が多々変更しなければならない事があり、 その度にタスクを変更するのが面倒と言うか全然PCの分からない人に でも変更可能なようにしたいと考えています。 で、csvなどでスケジュールを指定して表を読み込ませて、その時間に batファイルを動かせるようにしたいのですが、良い方法ってあるでしょ うか?別の方法でも良いのですが、視覚的に分かりやすいものを、と 考えています。 何か漠然とした質問ですみません ヒントだけでもいただけると助かります。
cron使え
>>80 Windows標準のタスク機能を使えばいい
>>80 for /f "delims=, tokens=1,2,3,4,〜" %a in (〜.csv) do at 〜 %a 〜 %b 〜
皆さまレス有難うございます
>>81 cronってWindowsにもありましたっけ?
>>82 タスクを手で作り変えるには量が多くてミスの可能性が高そうなので他の方法で考えています。
>>83 何か使った事のないコマンドがあるので良く分からないのですが、調べて検討します。
有難うございます。
連続投稿すみません。 教えて頂いたのを元に下記のような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 )
私の書き方がまずかったみたいですね。すみません。 ○のついた曜日の時間のみにatコマンドでbatをタスクスケジューラーに入れた いと思っているのです。 echoで表示させる事はできるのですが、%%a等に○が入った時に、他のbatを呼び出して それぞれのコマンドを実行させる事ができないのです。 また空白の箇所(○が入っていない)箇所は無視されて左にシフトされてしまう事 にも悩んでいます。例えば「,,,,,○,○」のcsvファイルを読み込ませると ○○が左詰になってしまいます。 分かりにくい文章ですみませんがお願いします。
86です。私も読解力不足でした。 ■お悩み1 >%%a等に○が入った時に、他のbatを呼び出してそれぞれのコマンドを実行させる事ができない これは「&&」が不要です。 if %%a == ○ at 11:25 /next:m "C:\aaa.bat" だとうまくATコマンドが実行されます。 ■お悩み2 >空白の箇所(○が入っていない)箇所は無視されて左にシフトされてしまう う〜ん。これは以下のようにカンマの間にスペースなどを入れて逃げるしかないような。
続き 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" )
zshでいう mkdir data{0000..0020} のようなことをしたいのですが for /L %i in (1,1,20) do set num=000%i & mkdir data%num:~-4% ではnumが最初に読み込まれるだけで以降更新してくれません なんかいい方法ないですか?
こんな感じかな。 ------------------------------- @echo off setlocal enabledelayedexpansion for /L %%i in (1,1,20) do ( set num=000%%i mkdir data!num:~-4! ) endlocal -------------------------------
>>92 ,93
多謝
まだまだ無知であることを痛感しました
バッチで取得した値を、クリップボードに格納するにはどうすればいいのですか? 不可能ではないらしいのですが、ググってもさっぱりわかりません。 博識なお方、例として%date%をそのままクリップボードに送る方法の解説をお願いします。
階層がぐちゃぐちゃなフォルダがたくさんあるので、ファイル整理をしています。 全部のフォルダを1階層(フォルダの中にフォルダがない状態)にするための バッチを作っています。 例 C:\新しいフォルダ\新しいフォルダ\A.A , B.B... C:\新しいフォルダ\A.A , B.B... ※フォルダ名に一貫性はありません。 move *.* ../ で2階層目のフォルダの中身を上に送れますが、送った後、 空になったゴミフォルダ C:\新しいフォルダ\新しいフォルダ\ を自動的に削除するにはどうしたらいいでしょうか? RDはワイルドカードが効かないので、ゴミフォルダだけ消せません。
>>98 消したいディレクトリを全て適当なディレクトリに移動して、そのディレクトリを階層ごと削除すればいいかと。
xcopy /e *.* foo
rmdir /s foo
って感じかな?
#手元に環境がないので適当に調べてくれ。
`dir /b`を取り込んで出力が0行なら空
>>100 こうですか?
for /F %e in ('dir /b') do rmdir %e /s /q
102 :
99 :05/02/13 20:42:50
役に立たなかったらしい。んじゃあとはしらね。
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 たとえば共有したい場所を\\192.168.0.2のtempフォルダだととしたら
net use Q: \\192.168.0.2\temp
とするとパスワードを求められますが、ここの入力も自動化したいのです。
110 :
デフォルトの名無しさん :05/02/17 14:25:13
単発で実行するとき窓開かないようには出来ないの?
>>110 バッチファイルのプロパティで「実行時の大きさ」を「最小化」にする。
最小化だとタスクバーにでちゃうから とにかく窓作らないようには出来ないの?
>>112 cmd.exeを単独で使う限り、無理。
114 :
デフォルトの名無しさん :05/02/18 00:23:45
cmd.exe使いにくいんですが、それに代わるソフトってないんでしょうか?
cygwin&ck
>>115 ダウンロードしようと思ったら40Mもあったのでやめました。
>>116 cmd.exeとの違いがよくわかりません。
cmd.exeは任意のフォントが使えないのと、ウィンドウサイズ変えるのが
面倒なのと、自動保管が糞なのと・・・・
DOSやめます。
バッチファイルをプログラミングと呼ぶのはなんとなく気恥ずかしい
120 :
デフォルトの名無しさん :05/02/18 23:34:14
Windows XPなんですが、バッチファイルを実行したらDOS窓は自動的に 閉じますよね。 これを閉じないようにしたいんですけどどうやるんですか?
>>120 バッチの実行結果を確認したいなどの目的で一時的に残したいだけなら、
バッチの最後にpauseコマンドでも入れておくべし。
>>121 ありがとう。やってみた。でもやっぱ
C:\Documents and Settings\XXXXX\デスクトップ>
↑こんな感じの状態で止まるようにはできませんよね?
cmd /k yourbatch.bat出起動しろ
あっ、 最後にバッチの中の最後に cmdという文字列を入れればできることに気がつきました! ありがとうございました。
複数の(10くらい)ファイルをドラッグアンドドロップすると、あらかじめ指定したフォルダへ全て無条件でコピーしてくれるバッチファイルを作りたいのですが、教えていただけませんか? よろしくお願いいたします。
SendToにそのフォルダのショートカット置くとかじゃ駄目? :loop if "%1"=="" goto :exit copy "%~1" c:\dest shift goto :loop :exit
>>126 ありがとうございます。
@echo off
:loop
if %1=="" goto :exit
copy %1 c:\dest
shift
goto :loop
:exit
でできました。XPなんですが、" のあるなしって何か関係あるのでしょうか?
きりばんげとずさー
>>127 マイドキュメントからコピーするときにちょっと幸せになれるかも
当方WinXPで、 コマンドプロンプトを起動するたびに cd デスクトップ と打つんですが、 これを短縮して起動させるバッチファイルとか可能ですか? もしくはデフォルトのディレクトリをデスクトップにすることはできませんか?
cmd /k cd デスクトップ
>>130 cmd cd デスクトップ
で行けました。
ありがとうございます。
あ・・・名前ミスったw
133 :
デフォルトの名無しさん :05/02/21 21:01:47
「a」というフォルダがあって、その中に「a1」,「a2]...「a10」の10個のサブフォルダがあったとします。 その10個のサブフォルダのそれぞれに「b」というフォルダがあったとします。 カレントディレクトリが「a」として、ここから「b」のフォルダとその中身を全部削除するには どうコマンドをかけばよいですか? なるべく1行で。 *?を使ってできるのかな?
>>133 for /d %%a in (a\a??) do @echo rd/s/q %%a\b
135 :
デフォルトの名無しさん :05/02/22 01:28:36
バッチファイルでアクセスカウンターは作れますか?
いろいろやって、やっとできました。 このバッチあると、階層が深いフォルダ( フォルダの中にフォルダがある)の中のファイルを 「フォルダの中のファイルをすべて選択 - ファイルを切り取り - 一段あがって貼り付け - 中間フォルダを削除」 の面倒なファイル操作しなくていいんですごい楽です。 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以降の作業ができないんだけど、バッチじゃ無理っぽい。
何か特別な方法でもあるの?
AddHandler cgi-script .bat
140 :
デフォルトの名無しさん :05/02/25 03:46:05
>>139 そういうこと聞いてるんじゃないんだけど。
バッチにファイルの内容を変数に読み込む命令なんてあるの?
もし無いならどうやってるの?
そういう質問。
>>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オプション使えないよな。
まあ9x系でもファイルの内容を環境変数に 読み込むことは出来ると思うが。 たとえばこんな感じでできるはず。 ・バッチファイル @echo off type data.dat > temp.bat call temp.bat echo %test% ・data.datの中身 set test=abc
9xでCGIなんてありえない
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
出力を実行するという荒業もアル @echo off echo set data=%%2 > ボリューム.bat vol > temp.bat call temp.bat
スレ違いかもしれんが、文字置換コマンドを実行するのに Win32 Perlをインストしてあればコマンドから >perl -i.bak -pe "s/大/小/" aa.txt (aa.txt内の"大"の文字を"小"に変更する) ができる。結構便利。 また、UNIXのコマンドをコマンドラインから使う方法もある。 NT版UNIX-like tools <<<<主要なUNIXコマンドのWinへの移植 UNIXのほぼ全てのコマンドが使える バッチでできるなら、それに越したことがないけど。
>>147 それ言い出すと、素直にcygwinをインストールしてbash使えばいいって結論になってまうがね。
バッチファイルに "abc def.zip"などというスペースを含む ファイルの渡し方を教えてください。 foo.bat "abc defzip" ではエラーになります。
内容がないようでした。 @echo off set FileName=%1 echo %FileName:~-4% if /i "%1:~-4%"==".zip" (echo Ok ) else ( echo No) こんなバッチファイルでエラーになります。 何が悪いのでしょう?
%1に入ってるファイル名の拡張子は %~x1 で取り出せる
ありがとうございました。 無事解決しました。
154 :
デフォルトの名無しさん :05/03/09 02:58:28
複数の端末からNETUSEを使用して IPアドレス一覧を上から順に接続していきデータを取得、切断し次の端末に接続を繰り返すバッチ。 しかしその端末とのPINGがNGな状態だと動作がとまってしまいます。 それを回避したいのですが・・ 1接続不可の場合にすぐに次の端末に接続を試みる方法 2または先にIPアドレス一覧リストを元に、PINGを実行してOKなリストの作成をするにはどう書けばいいのでしょうか?
>>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じゃだめなんですよね・・
shutdown -r
suttamonnda -r
160 :
デフォルトの名無しさん :05/03/10 22:45:56
基本なんでしょうけど 音を鳴らしたいのですが ・でなるようなのですが どう書いたらいいのですか?
>>160 まず日本語を勉強しなおせ。
話はそれからだ。
>>160 その・は、おそらく\a(0x07)のBelのつもりだと思う。
コマンドプロンプトで
echo Ctrl+G
と打ってみ。(表示はecho ^Gになる)
某所でバッチでタイマーを使う方法として @echo off echo 5秒後に実行します ehoice /c:1 /t:1,05>NUL echo 実行開始 というものが紹介されていたのですが、 > 'choice' は、内部コマンドまたは外部コマンド、 > 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 となってしまいます。 WindowsXP Pro SP1aなのですが、どうすれば使えるようになりますか?
>>164 時期的に2003発売前に書かれたものなので、
2003でしか使えないということは無いと思うのですが。
おいおい、、、w
すみません、初歩的な事なのですが教えて下さい。 ローカルフォルダをドライブにマウントするのに "net use e: \\127.0.0.1\winxp\bin" このようなコマンドを入力すると 「システムエラー 58が発生しました ネットワークパスが見つかりません」 と、マウント出来ないのです。 OSはXP-SP1 です。
システムエラー 53でした
>>170 "net use e: \\127.0.0.1\winxp\bin"
bin ってサブフォルダは無理だろ
net use e: \\127.0.0.1\winxp
ぐらいにしとけ。
素直に接続できるマシンは、ルートでもサブディレクトリでも無条件でマウント出来ます。 簡単に接続出来たので、別のマシンで設定すると、うまくマウント出来ないのです。 net use (return) で出てくる共有先はつながるのですが、なぜかおかしいのです。
>>170 net view \\127.0.0.1
で「winxp」が共有リソース(Disk)になってることを確認した?
>>175 はい、その辺は思い当たる所は確認しています。
net use で「OK」が出ている所だけしか接続出来ないようなのです
あ、今再度良く見たら「使用」の項目には、どの共有先も何も記載されていません
>>170 net use e: \\%COMPUTERNAME%\winxp\bin
でも繋がらなかったら、原因になりそうなのは
・共有名「winxp」フォルダの共有設定がおかしい
・「winxp」フォルダの中に「bin」フォルダがない
くらいしか思い浮かばないが。
どのへんがプログラミング?
(^□^)ギャハハハハハハハハハ!! binが共有名ならその上のフォルダ名winxpは要らんのじゃよ よって正解は net use e: \\ホスト名\bin じゃな。
>>180 binは共有していません。
c:\bin にあるわけで、\\PC\winxp\bin なんです。
仮に、binを共有して、\\PC\bin としても、同じくエラーでマウント出来ないのです。
現在、全く問題無いPCで色々試しているのですが、同じ現象が出るのはLANコードを抜いたり
LANカードを無効にした時に発生しています。
>>181 説明が下手だなぁ。
>LANコードを抜いたりLANカードを無効にした時に発生しています。
これは、「抜いたり向こうにした後再度接続しても」という意味でいいのかな?
そうでない、文字通り接続できない状況ならそりぁあマウントできねぇべ。
WinXPで、DOS窓を一切表示させずにbatを実行するにはどうしればいいですか? ショートカットを作って実行サイズを最小化したりSmartProcessorを使ったりして 最小化状態で実行させることは出来るのですが、タスクバーにも表示されないようにする方法が解りません。
CreateProcessしろ
>>183 タスクでバッチを走らせるんなら、別ユーザーで実行すれば全く見えなくなるのでわ?
>>186 それはどうかな?
俺の予想では別のPCで実行すればまったく見えなくなりそうな気がする。
>>187 それはどうかな?ってw
やってみてから言ってくれよな( ´,_ゝ`)プッ
だいたい別のPCからバッチを走らせるなんて、メンドクサイ事この上ないだろ。 接続性の問題とか、常時電源ONにしなくちゃいけない別PCが必要だとか ネットワーク越しではうまく動作しないとか。 で、やってみたのかい? ユーザーをバッチ用に作って、タスクを実行するユーザーにそのユーザーを指定して やれば、バックグラウンドでジョブが走ってくれるだろ。 これが一番簡単な方法だと思うがね( ´,_ゝ`)プッ
>>190 まじれす乙
vbsならこんなんでできる。
CreateObject("WScript.Shell").Run "unko.bat", 0
>>191 そっちの方が簡単そうだ
見直したぜ、おまえ( ´,_ゝ`)プッ
あんまりこう言うの→( ´,_ゝ`)プッを多用すると必死に見えるから 控えた方が良いよ
( ´,_ゝ`)プッ わかったぜ( ´,_ゝ`)プッ
じゃあ、必死で回答を求めてる時はレス容量が許す限り ( ´,_ゝ`)プッで埋め尽くせば、必死さが伝わる訳か。 こんど、急ぎで回答が欲しい場合などに使ってみよう。
ツマラン流れだな
( ´,_ゝ`)ウン
( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`) ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`) ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`) ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`) ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)プッ( ´ι_,`)
>>186 本気でキモイからそろそろやめてください。
お願いだからここを荒らすのはやめてください。本当にお願いします。
c:\1\2\3\hoge.bat を実行した場合、パラメータで %~d0 c: %~p0 \1\2\3\ %~n0 hoge %~x0 .bat という値を取得できますが、 \1\2\ と 3\ を取得するにはどうすれば良いでしょうか? ぶっちゃけカレントフォルダをバッチにD&Dして%~p1と%~n1を使えばいいんですが、 一々その操作をするのが煩わしいので、解る方教えてください。 フォルダ名やファイル名は可変です。
>>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にならず最初の%で切られる。 なにかいい方法無い?
^%
207 :
デフォルトの名無しさん :2005/03/28(月) 09:09:20
For %%a in (set) do For文で、この(set)の部分の質問なんですが ・ファイルのみ(拡張子無しも含む) ・フォルダのみ ・特定拡張子以外 を対象に指定するにはどうすれば良いのでしょうか? 拡張子のあるファイルや特定拡張子のファイルを指定する方法は解ったのですが。
208 :
207 :2005/03/28(月) 13:54:43
一つ自己解決 ・ファイルのみ(拡張子無しも含む) は(*)でいいんですね。 ってことで ・フォルダのみ ・特定拡張子以外 をお願いします。
210 :
207 :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お」となりましたが。
211 :
207 :2005/03/31(木) 22:32:43
>>207 2k/xpなら
フォルダのみ
for /d %%a in (*) do echo %%a
特定拡張子以外
for %%a in (*) do if /i not .特定==%%~xa echo %%a
213 :
1 :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系統で動くものを教えて下さい。 すいませんがよろしくお願いします。
98系統だと||や&&が使えないんじゃないかな。 if errorlevelで分岐するしかないかと。 それは2K以降でも使える筈。
@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 :
1 :2005/04/06(水) 19:58:59
早速の回答ありがとうございます! とりあえず2000では出来ました! 明日98マシンで試してみます。 >単発質問スレ すいません^^;;;
217 :
1 :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 -------------------------------------------------------------------------------
なんかしらんが set /p num= echo %num% とか
>>218 batkey.com が 16bitのDOSコマンドだから
command.comとMSDOSサブシステムが起動されてしまう。
代わりのWin32コンソールコマンドを探してくるほうが良いね。
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 -------------------------------------------------------------------------------
バッチファイルで 時刻形式をhhnnssで取得したいです。 echo %time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2% でやると時間が1桁の時、空白となってしまいます。 1桁のときは0を付加したいです。 どのようにしたら良いでしょうか?
229 :
228 :2005/04/12(火) 11:39:06
くだらない質問してすみませんでした。 スルーしてください。
どっちの方法で自己解決したのか気になる
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
del * /q start (ry)iexplorer
233 :
デフォルトの名無しさん :2005/04/13(水) 21:20:24
>>232 ありがとうございます。
/qのところに削除したいフォルダを指定して試してみたのですが、
うまくいきませんでした。
プロンプト画面が現れて、yと入力しないで自動的に削除してほしいと
思っています。あと、バッチファイル自体がなくなってしまうのは
ちょっとまずいので、別な方法はありませんでしょうか。
(削除したあとにIEを起動するといいましたが、プログラムの実行
ファイルを起動させたいと思っています)
すみませんが、お分かりになる方お願いします。
/qは確認を無くすオプションだろ。
235 :
デフォルトの名無しさん :2005/04/13(水) 21:36:58
>/qは確認を無くすオプションだろ。 そうでしたか。 ためしに下のようにやってみました。 CD C:\aaa del * /q \aaa以下フォルダを含めてすべて削除したいのですが、フォルダは 残ってしまうみたいです。ファイルは削除されました。
基本的なことなんだからちっとは検索でもしろ。
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
>>237 お教えありがとうございます。
それを試してみたらできました。
一応、調査したのですが、きほんてきなコマンドで構成されているので、
完全に自分の調査不足でした。
しょうもない質問にわざわざ答えていただきありがとうございました!
239 :
デフォルトの名無しさん :2005/04/22(金) 14:36:45
ショートカットファイル作るコマンドってないですか?
>>239 .lnkを作るコマンドは無いよ。
ショートカットを作るコマンドラインアプリがあるからそれでも使えば?
複数作りたいならバッチからそれを使えばいいし。
まあ、ショートカットと同じような動作をするバッチなら、
バッチから作ることも可能だけど。
VCで、cl コマンド打っていつもコンパイルしています。 そうすると、コンパイル終了後いつも .obj を生成し、邪魔で仕方ないのです。 @echo off cl %1 del %1.obj で、消せるバッチファイルを作ってみたつもりですが、コンパイル後 『aaa.c.obj は存在しません』と出ます。どなたかうまく修正できる方は いりゃっしゃいませんか?
%~n1.obj
出来ました、ありがとうございます!
make つかえよ
dir に拡張オプションとして、/cs を与えたら、一端画面をクリアして dir を実行するバッチファイルを作りたいです。 本来の /xxx の機能もそのままとして、一体どのように作ればよろしいのでしょうか?
/xxx って言うのは、/A とか、 /B とか本来あるコマンド(?)のことです・・・
まずコマンド名をDIRとは別にしないと無理。
そういった拡張はできんのですか。 残念です。
dirc.batで妥協しとけ
doskey マクロつかえばできるんじゃない?
ちょっと複数ファイルを削除するバッチファイルを作ろうとしました。 ただ、削除するだけだと、なにも表示されなくて不安でしたので、 @echo off :loop erase /S %1 shift if not "%1" == "" goto loop と /S をつけてみただけでうまく行かなくなりました。 どないして・・・
252 :
デフォルトの名無しさん :2005/04/24(日) 14:25:51
レスがきちょらん。・゚・(ノД`)・゚・。 そんなに馬鹿らしい質問だったのかな?? マジで困ってます。お助け
> そんなに馬鹿らしい質問だったのかな?? うん
まぁ、そんなに苛めんなや。
>>252 "/s"の意味を、erase /? して確認してから出直しておいで。
>>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以外になる位置を探すしか無いんですかね? バッチ内でもっと簡単に出来る方法を知ってる方が居ましたら教えてください。
とりあえず、与える文字の文字数が固定だったら、 Set hoge=00000101 set /a hoge=1%hoge%-100000000
Forを2段使ってるときに、2段目である条件を満たしたら 2段目のForを抜けて1段目のForに戻るにはどうすれば良いですか? For ( For ( If 条件 goto 000 ) :000 @ ) という方法だと、@の部分の処理を1回だけ行い1段目のForも抜けてしまいます。 VBで言うところのExit Forのように、2段目のForだけを抜けるにはどうすればいいですか?
>>260 call : でサブルーチンにするとか、
262 :
260 :2005/05/02(月) 13:36:30
>>261 それをやりたくないからここに聞きに来た次第です。
何とぞよろしくお願いします。
質問です。 複数ファイルの同時起動をさせたいのですが、 "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です。
start
265 :
263 :2005/05/02(月) 18:44:45
d。
質問です ファイル名を先頭から3文字消して付け直したいのですが方法が思いつきません 3文字に規則性はないです
>>266 Set hoge=ファイル名
Set hoge=%hoge:~2%
これで hoge にファイル名の先頭から3文字を消した文字列が格納される。
あとはお好きなように。
270 :
デフォルトの名無しさん :2005/05/08(日) 07:02:13
hogeってどういうコマンドですか?
>>270 人によって
コマンド名だったり変数名だったり関数名だったりメソッド名だったりクラス名だったりする
ステキな文字列
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は自身のパス+ファイル名となります。 このように階層が浅い場合はうまくいくのですが、階層の深いディレクトリ(デスクトップ等) になると削除できずに残ってしまいます。一体何故なのでしょうか。また、階層が深い ディレクトリでも削除できるようにするにはどうすれば良いのでしょうか。
274 :
273 :2005/05/08(日) 21:36:29
すいません。相対パスで指定する事で解決しました。 お騒がせしました。
275 :
デフォルトの名無しさん :2005/05/13(金) 23:36:23
WindowsXPって標準でzip圧縮出来ますよね。 これをバッチから行うにはどうすれば良いのですか? たとえば%1(フォルダ)を"%~dpn0\hoge.zip"に圧縮する場合は?
特定フォルダ内に.aaa .bbb .ccc の拡張子のファイルがあるとします。 (これらの拡張子のファイルが同時に存在することはありません) *.aaa *.bbb → 1111(拡張子無し) *.ccc → 2222.333 このようにファイル名を変更し、 さらに元のファイルのバックアップを拡張子.bac で作成するバッチファイルはどのように作ればイイですか? このようにファイル名前を最初に設定しておけば ドラッグ&ドロップで簡単にファイル名を変換してくれるソフト ありませんか?
>>276 マルチかよ..._| ̄|○
向こうで回答しちゃったじゃねーかコノヤロー
とりあえず向こうではバックアップの件は書いてなかったから
バックアップを取る処理はしてないけど、
マルチにこれ以上答える義理はないから後は自分でがんがれ。
278 :
276 :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
> これを機に勉強したいと思います。 そう思わなくても自分で勉強するしかないな。 どんな事情があっても、一方の質問を取り下げずに 他のスレでマルチ質問したら、回答を得る権利が失われるから。
はつみみです。
281 :
275 :2005/05/16(月) 08:16:20
>>275 それのどこがプログラミング?
OSやアプリの使い方を知りたいならWindows板とか
>282-283 相当イヤな奴だな
275 には誰も回答できないで FA
まだいたの
いるんです
素直にWin32用のInfo-Zip/UnZipでも使え。 そっちの方が手っ取り早い。
>289 ワロタw
MS-DOS で UNIX の which コマンド相当のものはないのですか? 調べてもわかりません。たぶんないとは思いますが、どなたか bat ファイルで実現できませんか? よろしくお願いします。
292 :
1 :2005/05/16(月) 23:17:07
>>292 あっ、ありがとうざいます!!
which MS-DOS 相当 とか混ぜで検索してましたヨ witch だけで良かったんですね。
ありがたく使わせていただきます。
294 :
デフォルトの名無しさん :2005/05/23(月) 11:47:45
数個あるテキストファイルからある特定の文字列ではじまる行を抜き出して、他のある特 定の文字列ではじまる行に付け加えたいのですが、どうすれば良いのでしょうか? 例)abc.txtの中身 xxx hello yyy 123 このテキストファイルを xxx hello 123 yyy 123 に書き換えたいのです。 バッチファイルで実現可能でしょうか?
>>294 バッチでも出来るけどFSO使えるスクリプト使った方が楽
wsfでもJavaScriptでもvbsでもなんでもいいけど。
環境があるならperlとかでもいいし。
どっちにしろ書き換えではなく書き出しの中で付加する形になるけど
バッチでやるならForでファイル読みながらIFで条件判断してtempに書き出し
終わったら書き出したファイルを元ファイルに上書きでok
バッチファイルだけでは実現不可能。 少なくとも、cmd.exe類似のコマンドインタプリタが必要。
めんどくさそうだけど、バッチだけでもやろうと思えばできるんじゃね?
for /f でファイルを1行ずつ読める
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 番目移行のすべてのトークンを 取得していることに注意してください。スペースを含むファイル名に対し...
すみません。
>>273 でも出ているのですが、深い階層のファイルを指定すると
「指定されたパスが見つかりません。」と怒られてしまいます。
これはどうにもならないのでしょうか?
301 :
300 :2005/05/26(木) 23:41:16
真下に解決策が書いてありました。。すみません。。
302 :
デフォルトの名無しさん :2005/06/05(日) 10:48:42
%1に文字列fooが含まれてるかどうかってどうやって判別すればいいですか?
>>302 @echo off
if %~1==foo (
@echo あるがな
) else (
@echo ないがな
)
みたいな
>>302 set dummy=%1
set dummy=%dummy:foo=%
if "%1"=="%dummy%" echo "foo"は含まれていません。
こうしてみると、cmd.exe もなかなか個性が豊かですなー。 でも、もうcygwinでいいんじゃん…
___ . |(・∀・)| . | ̄ ̄ ̄ シグウィン独立領 △ △l | __△|_.田 |△_____ |__|__門_|__|_____|_____ 自分の中じゃ上のような感じでちょっと大げさな気もする。
>>303 それって「fooが含まれてるか」ではなくて「fooに一致するか」だろw
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)でも使うため、 この方法が駄目だと分かりました。
>>308 最初の2行のIf_Elseの構文が既に間違ってるんですけど。
というか、それを見る限りElseと:ACT-9Xのラベルは要らないんですけど。
君のレベルじゃこのスレには質問者として来るのもまだ早い。
基本的なことくらい自分で勉強してこい。
つーかなんで追い出すのかわからん。 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"
>>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"
)
314 :
312 :2005/06/24(金) 17:51:18
>>313 解決しました。有難うございます。
そんな書き方もあるんですね。
同一フォルダ内に、 ---------- a.txt.bak b.txt.bak c.txt.bak ---------- というファイルがあるとして、.bak を取り除くプログラムを組みたい のですが、どのようにすればよいですか? rename で、.bak を取ったように rename すればいいと思うのですが、 for 文の回し方がよくわかりません。
>>315 for %I in (*.txt.bak) do ren "%I" "%~nI"
>316 すみません。どうしてかエラーが出てしまいます。使い方が間違っているのでしょうか? 関係ないかもしれないけど、自分の環境はWindows2000です。 ↓ >test a.txt.bak b.txt.bak >test a.txt b.txt >test a.txt >test バッチ パラメータの置き換えで、パス演算子の次の使用法は無効です: %~nI" 有効な形式については、CALL /? または FOR /? と入力してください。
319 :
317 :2005/07/03(日) 20:45:47
% を %% にしたら動いてくれました お騒がせしました。
>>315 ren *.bak *.
じゃダメなの?
ログファイルに時分秒を表示させたいのです。 で、"TIME"を使ってみたのですが、画面が待機状態になって動かなくなってしまい、"TIME /T"と打つと表示だけになりましたが、分迄しか表示されませんでした。 上手い方法はあるでしょうか。
time <nul
324 :
321 :2005/07/05(火) 09:29:10
>>322 ありがとうございました、無事に上手く出来ました。
>323はお気に召さなかったらしい。
そりゃそうだろうな
time <ぬるぽ
> うんこ 'うんこ' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
330 :
デフォルトの名無しさん :2005/07/11(月) 08:53:11
age
age
以下のように環境変数が定義されているとして、 set data1=aaa set data2=bbb set data3=ccc FORコマンド 辺りを使って環境変数 data1, data2, data3の フォルダを作成する方法はないものでしょうか。 今のところ、以下のように一つづつフォルダを作成する方法しか 思いつきません。 md %data1% md %data3% md %data2%
環境変数列挙 FOR /F %i IN ('set') DO @echo %i
for %%i in ("%data1%" "%data2%" "%data3%") do mkdir %%i && echo succ || echo fail
SETLOCAL SET i = 0 :S SET /A i += 1 for /f "tokens=3" %%a in ('set data%%i%%') do mkdir %%a && goto S ENDLOCAL
>333-335 回答を参考にしてほしいバッチファイルを作成することができました。 最終的に >335 の5行目を for /f "tokens=2 delims== " %%a in ('set data%%i%%') do mkdir %%a && goto S としました。 早い対応まことにありがとうございます。
にしてもLonghornでてもシェルスクリプトはcmdのままなのかね・・・
setlocal enabledelayedexpansion for /l %%i in (1,1,3) do mkdir !data%%i! endlocal
C言語での #define FILE_NAME "hoge.bat" のような機能を使って変数を最初にまとめたいのですが、 調べても分からないのでご教授お願いします。
call
>>340 そういう使い方あるんですね・・・orz
ありがとうございました
>>339 set FILE_NAME=hoge.bat
じゃねーの?
いいけどさ。
343 :
デフォルトの名無しさん :2005/08/04(木) 12:20:51
フォルダ群の中から特定の文字列を持つフォルダだけを別の場所に移動したいのですが うまくバッチで対応できますか?
for /d %%a in (*特定の文字列*) do
エクスプローラで簡単にできることでも わざわざバッチなんだ
エクスプローラで簡単にできることを更に簡単に行うためにバッチなんだろ。
>>345 大量に発生するフォルダの場所と名前は決まってて最終的な保存先は決まってるから
出来れば作業を単純化(ツリー構造を知らない人でも使えるように)したいんです。(><)
フォルダAに複数ある”特定文字列Axxxx”と”特定文字列Bxxxx”というフォルダ(xxxxは不特定)を 別ドライブにある対応フォルダAとBにそれぞれ振り分けたいんです。 自分には出来ませんでした!(>.<)
ここは「バッチ」スレじゃなくてバッチ「プログラミング」スレだからな PC初心者板で質問した方がいいと思うよ
昨日、とりあえずPCを窓から投げ捨てるんだと言われました。(><)
大学の授業の関係で地図描画用のバッチ作り始めたんだが これLinuxでシェル書いた方が楽なんかな? 過去ログ読んだ感じじゃバッチのが書くのが楽そうなんだけど 環境はXP、一応Cygwin入れてある 地図描画のソフトがGMTっていうハワイ大学かどっかのやつ
シェルはまさしくそうしたことにも耐えられるように設計されている。 バッチはそこまでは意図していない代物から継ぎ足し継ぎ足しで進化してきている。 どっちが向いているかは自明。
ユーザーの声を取り入れながら進化してきたBATにはかないませんよ。
まあWinでもLinuxでも大概 {perl,ruby} -e で片付けちゃうけどな俺の場合。
いまさらバッチファイルの優位性なんて誰も主張してないんだから帰った帰った
357 :
not 302 :2005/08/08(月) 07:35:20
すみません、
>>304 の「set dummy=%dummy:foo=%」の意味がわからないのですが、
解説お願いできますか?
変数の中の"foo"を空文字に置換 "aaafoobbb" → "aaabbb" "aaabarbbb" → "aaabarbbb" 置換前と後で内容が同じなら"foo"は含まれてなかった、 違えば"foo"が含まれてたってこと。
359 :
357 :2005/08/08(月) 10:31:15
なるほどー、理解できました。ありがとうございます。
list1.txt, list2.txtから一行ずつ読み込んで行く処理って書けますか? list1.txtから順番に読むループの中にlist2.txtを目的行まで空読みするしかないですかね。
そういうのは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
>>362 そのバッチを別のバッチから呼べばいいんじゃない?
>362 @echo %* @%* こんなバッチファイルを作って call するとか。
362です。
>>363 さん
>>364 さん レスありがとうございます。
やっぱ1行にまとめるのはできなそうなんですね。イメージ的には、echo した標準出力の
文字列(コマンド)を、パイプで受けてなんかのコマンドの引数にして実行するみたいな。
で、そのときにecho の出力は同時にログファイルに書き、パイプで受けて実行したコマンド
の結果もログファイルに書くような。
(後でログファイル見ても何のコマンドを実行した結果なのかわからないことがあって、
かといって、何のコマンドを実行したかを、コマンドを実行する前に echo で記述しておく
のは2度手間だし、修正があったとき間違えそうなので1つにできればと思いました。)
364さんの方法で2度手間は解決できそうです。
どうもありがとうございました。
net use * で接続した共有資源をbatの最後で切断したいのですが、 割り当てられたデバイス名(D:〜Z:)を取得する方法はありますでしょうか?
>>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
>>367 ご丁寧にありがとうございます。
やはりVBSが楽そうですね。
>365 echo %* | tee history.log | cmd /k
teeなんてねー
質問です。 対象のレジストリキーの値のDWORD値を参照して、もし1なら2に書き換える という様にするにはどうすればいいでしょうか?
wsh使え まあ、XPならReg.exeが使えるからバッチでも簡単だけど
あぁすいません。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%
%~dp0
なるほど。こうすれば(↓)いいんですね。 SET WORK=%~dp0 SET DRIVE=%WORK:~0,2% ありがとうございました。
バッチファイルから起動してもプロンプトが閉じず、 ログをプロンプトで見れる方法はありませんか?
pause
>>378 確かにそうなんですが、結果によって次のコマンドも打ちたいのです。
説明が悪くてすみません。
最後に@cmdって入れとけ
日本語でよろしく
382 :
デフォルトの名無しさん :2005/08/28(日) 13:00:55
>>380 @ってecho以外にも指定があったのですね。
ロゴは気になりますが、満足いく機能が出来ました。
ありがとう。
384 :
デフォルトの名無しさん :2005/08/28(日) 13:14:28
>>383 ロゴ出したくなかったらショートカット作ってリンク先を、
%ComSpec% /k "バッチファイルのパス"
にするといいはず。
>>384 おお、この方法で作業ディレクトリを
%~dp0にすると滅茶苦茶使いやすくなります。
大感謝です。
386 :
デフォルトの名無しさん :2005/09/02(金) 15:30:21
ドラッグ&ドロップしたファイル(主に複数)のテキストファイルに対して、 本文中のタブと空白、ファイルの拡張子を削除するバッチを作ろうと思っているのですが、 どのようにしたらよいでしょうか。よろしくお願いいたします
wshってノートン先生がヒステリックになるからヤダ
>>388 というかノー○ンのほうを捨てろ。俺も昔はノー○ンマンセーだったが、あまりの重さにノー○ンは捨てた。
ちなみにM○Feeとかト○ンドマイクロとかも使ってみたけどこいつらも重すぎ。
結局いまはアンチウィルスの比較サイトを参考にしてNOD32を使ってる。
アンチウィルスソフトはたいていどれも評価利用ができるようになってるから実際に使ってみて比べるのが吉。
・・・スレ違いスマソン。
>>389 攻撃してきた奴の住所が分かるから最近のノートン先生は楽しいよ
ノーパン健康法の俺が来たよ
>>391 俺もさっきノーパン健康法について語り合ってきた
いい年こいてつまらんレス付けるなぁ
そういうお前がつまらん
もう良いよ
XPです。 複数行のテキストファイルの内容を一つの変数にいれることは出来ますでしょうか? 1行ずつ読み込んで、どんどん結合してければよいんですが。
CMDの起動オプションで遅延環境変数の展開を有効にしてから FOR /Fで一行づつ読み込んで環境変数に追加していけばできるかも。
遅延環境変数を有効にするにはsetlocal enabledelayedexpansionで可能
401 :
398 :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で複数行表示したいのです。
402 :
398 :2005/09/12(月) 23:50:12
自分で読み返してみると誤解されそうな書き方だったんで補足します。 (テキストの内容を表示したいだけなら最初からtype使えばいいですよね。) 最終的には読み込んだ複数行のテキストをIPMessengerで送信します。 vbsなどでは str = str & 読み込んだテキスト & vbCrLf などと、改行も含めて変数に追加していき ipmsg /msg localhost str で、複数行のメッセージも送信できますが、 これをバッチのみで行いたいのです。
404 :
403 :2005/09/13(火) 01:25:28
ああ、できるね。ごめんよ。
405 :
398 :2005/09/13(火) 22:59:39
変数に改行を含めるのがうまくできません、 制御コードとも違いますよね。。。orz
なぜIP Messenger の作者の掲示板で聞かないんだろう? もしかするとパイプでできるかもしれないし ファイル名指定して送信できるように改良してくれる可能性だってある。
改行付加はできるけど、ここでする話題じゃないだろ。
「環境変数に改行文字をセット」でググれ 知りたいのは結局これだろう? IP Messengerとか言い出すから誤解される。
409 :
398 :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ファイルの結果はどこにも保存できないようです。
>>410 %%
超基本っつーか、それ以前の話だ。
つーかもっと簡単に(以下略
412 :
410 :2005/09/22(木) 11:33:00
>>411 OSはWindows2000です。ちなみに%%だと実行すらできません。
と思ったらbatファイルにしたらできたよ!すんません・・・orz
コマンドプロンプトだとできなかったのに、batファイルだとできるのか。。。 orz キホンダッテサ・・・
forの変数はコマンドプロンプトでは%、バッチでは%% そんなことちょっと調べりゃいくらでも書いてあるし、 このスレ見ただけでもわかれうだろうに
そうだよ、そのくらい誰でもわかれうよ。
>>412 それはさておき、なぜ%が二つ必要か理解できてる?
>>414 あのレベルなら理由を知っておく必要はない
丸暗記してるだけで充分だ
そして聞かれてもないのにお前がシッタカ風吹かせる必要もない
聞かれたときの答えてやればいい
まあ、ここの常駐ならほとんど誰でも答えられるだろうけど
>>414 412じゃないけど理解できない。
昔のDOSでは 『 echo %TEMP% 』 の結果は 『 %TEMP% 』だったけど
CMD.EXEでは 『 C:\Docume 〜〜』 となる。
なぜ % ひとつでよいのか?
なんか違う方向行ってるな
もしかしたら、>415は>414が>413へのあからさまな皮肉を書いているのに気付いていないのだろうか。
空気
420 :
デフォルトの名無しさん :2005/09/23(金) 21:31:40
すいません教えていただけませんか ファイル名の頭に8桁の任意の数値を追加したいのですが バッチ処理するにはどうしたらよいのでしょうか ググらないで教えて君も甚だしいのは承知ですが時間がありません 初心者のくだらない質問ですが宜しくおねがいいたします 今からググってきます
>>420 普通にやればいいと思うよ
普通なやり方はググってね
422 :
デフォルトの名無しさん :2005/09/23(金) 21:53:15
すみません 来週までに必要なんです プログラム全く素人です 引き続きググってきます
なんだ、まだ数十時間あるじゃないか。 ググってどうしても解らなかったら 「自分なりに書いた物」をここに貼って、日曜の22時以降に質問しろ そしたら答えよう 今すぐ必要って訳じゃないみたいだからその方がお前のためになるしな
一緒にsageも覚えてこい豚
わかりました 頑張ってみます
cmd.exe もなんかむやみに付け足しの機能が増えてきたもんですね
427 :
デフォルトの名無しさん :2005/09/24(土) 02:10:26
バッチファイルごときに偉そうなスレですね
>>427 どうしたの、ボウヤ?
ageてまでわざわざ言うことかい?
眠いです…%1とかなんか初歩がわからないのでかなり苦戦してます… もう少し頑張ってから寝ます
WSHの方が役にたつよ。 速いし。
433 :
デフォルトの名無しさん :2005/09/25(日) 06:07:22
バッチファイルごときに偉そうなスレですね
435 :
デフォルトの名無しさん :2005/09/25(日) 07:37:25
また俺か?
指定したファイルをNTFSの圧縮かけるのってどうやるんですか? Attribじゃできなさそうだし・・
compact なぜリア小みたいなのがバッチファイルスレに巣食っているのかと
443 :
416 :2005/09/25(日) 11:18:06
誰も答えてくれない・・・
そりゃそうだろ まともな質問になってないし
445 :
デフォルトの名無しさん :2005/09/25(日) 11:57:36
屑 バーッチ! フォー
446 :
416 :2005/09/25(日) 12:49:14
>>444 batファイルでは %% と書かなきゃいけないのに
なんでコマンドラインでは % ひとつだけで良いのかという質問です。
仕様です
□ヘルプ(H) ←これを読んでから質問しろ 彡田スタート
>>448 どっかにかいてあるか、その仕様?
コマンドラインでは 『 echo %TIMPO% 』 は 『 %TIMPO% 』 と表示されますが
バッチファイル内では 『 ECHO は <OFF> です』 と表示されます。
ひょっとしてヘルプも読まんであてずっぽうでやってるのか? そんなやつに説明するだけ無駄だろう
バチが当たるな バチが・・
ゴミばっか
はいはい
>>451 それはバッチに引っ掛けたギャグのつもりか?
>>452 それはばっちぃへの布石のつもりか?
はいはい
>なぜ%が二つ必要か理解できてる? なんて聞くから、てっきりキチガイにでも納得できる説明を聞けるかと思ったのに >仕様 >ヘルプ嫁 かよ。 set i=ぬるぽ for %i in (*.*) do Echo %i%i
キチガイには 何言っても 無駄
コマンドライン引数
>>457 引用部一箇所目は漏れだが、それ以外は漏れじゃない。
ついでに言えば揶揄されたから解説書くのを止めた。
頑張ってみましたが駄目でした… コマンド実行はファイル名指定で一個づつしか処理できないのかな ワイルドカードとかFOR、IF使って試してみましたが 結局ファイル名を変化させながら指定するってのが出来なくて… 環境変数とかも同じですよね 仕方ないので作業フォルダ内の指定拡張子ファイルを全て取り込んだ 状態でリネームソフトが走るようにしました 作業途中でワンオペレーション必要ですが仕方ないですね これが自分の現状ですね
>>461 どうしたの?
もし
>>420 なら『「自分なりに書いた物」をここに貼って』だよ。
理想通りに動かないまでもある程度書いてくれることで、
具体的に何がしたいのかを読みとることが出来るし。
>>420 では具体的に何をしたいのか書いてないからな。
>>460 が勝手に自分で理由考えて勝手に自分で正しいと思い込んでるんじゃないか?
バッチに限らないがプログラミング言語の解説で
仕様が決まった理由まで解説してあることはほとんどない。
@echo off rem -------------------------- mkdir nc mkdir ncxx rem -------------------------- move *.nc ncxx\ call リネームソフトのパス.exe ncxx\ copy ncxx\*.nc サーバーへ転送(コピー) move ncxx\*.nc nc\ rmdir ncxx 結局こんなモンしか考えつきませんでした… なにがしたいかと申しますと名前がバラバラ(当たり前ですが)の 複数ファイルにコマンドを与えてループで処理したいのです あたえる処理は複数のファイルを同時に処理できませんので… ばかな質問だとは思いますが…何卒おねがいします
↑ああすみません420です 同一フォルダ内のファイル全てに処理したら終了するような… そんな風にしたかったのです
任意の数字つうのがすごくあいまいで何をやりたいのか意味不明 こんなのでいいのか? aaa.txt bbb.txt→12345678aaa.txt 12345678bbb.txt
はい!!!!そのとうりです!! お願いします
cd/d "処理したいファイルがあるフォルダのパス" for %%a in (*.nc) do ( 処理 ) でいいんじゃねーの?
DO(ここにコマンドですよね?) これでどんな名前でもファイル数がいくつでも対応するのですか? なまえを変更するのはどうすれば… 言葉遣いがなってなかったらすみません
今から買ってきた本全部読み返してみます! レス遅れるかもしれません。すみません
for %%a in (*.nc) do del %cd% *.nc pause いまDELコマンドで試してみたんですが、.cmdも全部消えちゃうんですよ…
処理対象は "%%~a"
うそつくなよ
for %%a in (*.nc) do del %cd% %%~a pause こういう意味じゃないんでしょうね…全部消えました…
なんか、この数十時間たいした努力もせず 今になって調べだした感がありありと出てるな。 「どうせ日曜には教えて貰えるから」と思ってたんだろうが 本人にやる気が無いんだからもう放置でいいじゃん。 ってことで終了。
とりあえず落ち着いて、実行する前に for /? とするなり、ヘルプで「for」を検索するなりしてくれ。 お願いだから。
for %%a in (*.nc) do del %cd% "%%~a" pause こうでもないですよね
教えて粘着
すみませんでした。もう消えます
お礼言うの忘れました みなさんありがとうございました cd/d %cd% for %%a in (*.nc) do del *.nc pause これで一応動作したので後は自力でがんばってみようとおもいます
>>480 それならこれだけでいい
del %cd%\*.nc
pause
だから、最終的にやりたいことはdelじゃな(ry
明日早く会社に行って試してみます! 本当にありがとうございました!!
間違って会社の大事なデータ全部消すなよw
485 :
デフォルトの名無しさん :2005/09/26(月) 22:41:09
バッチファイルごときに偉そうなスレですね
486 :
デフォルトの名無しさん :2005/09/27(火) 04:05:57
%~1というふうにすればバッチファイルに渡されたパラメータ文字列の 引用符を取り除くことができますが、 同じように、環境変数から引用符を取り除くにはどうすればいいですか? SET A="ABC" SET B=%~A% ←ここでB=ABCになることを期待
先頭と末尾のダブルクォーテイションを取り除くという処理ではないが SET A="ABC" SET B=%A:"=% でB=ABCになる。 但し「"A"BC"」の場合等は「A"BC」にならず「ABC」になる 「"A"BC"」を「A"BC」にするならば細かい文字処理が必要。
488 :
486 :2005/09/29(木) 05:18:14
>>487 それでいけそうです。ありがとうございます!
489 :
デフォルトの名無しさん :2005/10/10(月) 22:18:43
コントロールパネルの「アプリケーションの追加と削除」に表示される一覧を ファイルに書き出したいのですが上手い方法ありませんか。 自分で思いついた方法では reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall" ファイル名 で全て書き出す方法ぐらいです。 これだとテキストの整形が面倒なので、何とかDisplayNameだけ書き出す方法ありませんか。
スレ違い
>スレ違い とも限らんのでは? バッチコマンドで出来るならOKってことでイクナイ? REG QUERY "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall" /s | FINDSTR "DisplayName" | FINDSTR /V "Parent Quiet" | SORT 横長でスマンがこんなカンジ。最後のSORTはHOTFIXESを一箇所にまとめて見易く するためのオマケ。残りのゴミ"DisplayName REG_SZ"はテキストエディタで 空白と置換するか、これもバッチでやりたければ"SET /?"で幸せになれる予感。
ここはバッチコマンドスレではない。 バッチプログラミングスレだ。
その違いが解ってない奴が最近多いよね
494 :
489 :2005/10/11(火) 08:42:26
>>491 ありがとうございます。大体上手くできました。
ただ、当方でこの方法を試すと文字列の後ろがいくつか切れてしまうものがありました。
(例)Kより後ろが無くなってる
DisplayName REG_SZ Windows XP セキュリティ更新 (K
教えて頂いた方法をヒントにもう少し自分で調べてみます。ホントにありがとうございました。
>>他のみなさん
スレ違いとのことですが、他に適したスレが見つからなかったので許してください・・・
スレ違いとか言うヤシは回答ができないだけのヤシだったりする
可哀相な496...
悲惨な497
必死な498
悔しがっている499
501 :
デフォルトの名無しさん :2005/10/12(水) 17:02:03
WinXPで、ユーザーに入力を促し、 入力された文字に因って処理を振り分けるものを作りたいんだけど 解る方、fooと入力したらecho a、barと入力したら echo b、それ以外ならecho cを 実行するサンプルを書いてください。
setlocal enableextensions set /p a=入力キボンヌ if "%a%"=="foo" (echo a) else if "%a%"=="bar" (echo b) else (echo c) endlocal
set /p a=入力キボンヌ if exits %a%.bat (%a%) else echo c [foo.bat] echo a [bar.bat] echo b
@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
ファイル名を引数としてとるバッチファイルを書こうとしてるのですが、 ファイルが存在するか、引数が存在するかどうかを判定するのにこまってます。 if "%1" == "" goto end if not exist "%1" goto end if not exist %1 goto end このようなやり方を考えてみましたが、 一つ目と二つ目はファイル名にスペースが含まれると駄目、 三つ目は引数がない場合にエラーになります。 ファイル名に空白がある場合と、引数が存在しない場合 両方に対応できる確認の方法はないでしょうか。
>>505 まず、引数が存在しないかだけ確かめて、次にファイルがあるかないか判定して何がおかしい。
どうもありがとうございます。 環境は XP SP2 です。 引数の存在を調べるには if "%1" == "" goto end こうだと思うのですが、この時点でファイル名に空白(スペース)があると エラーになってしまいます。 if %1x == x goto end これでも駄目でした。 引数の存在を調べることはよくあると思うので、 なにかうまい方法があるのではないかと思うのですが。
>>508 エラーにはならんと思うが。
試しに、どんなコマンドラインを与えたのか書いて味噌。
>>509 ありがとうございます。test.bat として
if "%1" == "" goto end
echo hoge
:end
このようなバッチファイルを書いて、
"a a" という引数を与えてたのですが、
今 cmd から実験したところ、
test.bat "a a"
ではエラーになりますが、
test.bat a\ a
だとエラーにならないようです。
cygwin からテストするとどっちもエラーになっていたため、
気づきませんでした。
実はファイルをドラッグアンドドロップで与えるバッチファイルを
作りたかったのですが、ドラッグアンドドロップされたファイルは
"" でクォートされたのと同じになるようです。
そこで、過去スレを読んでいたところ、
"%1" のところを "%~1" とすると、
"" でクォートされていても引用符を取り除けるということを知りました。
これを使うと上記のテストでエラーがでなくなり、当初の目的は達せそうです。
いろいろ混乱したことを書いてしまいましたが、
大変勉強になりました。ありがとうございました。
基礎中の基礎も解ってない初心者だったのか まあPC触り初めて数時間くらいならこんなものか
確かに windows はつい最近使い始めたばかりので、PC は初心者です。 バッチファイルは dos 以来なので、%~1 こういう表記は知りませんでした。
DOS使ってたならhelpぐらい見れるだろ if /? help if ずばりの答えが書いてあるはずだが
書いてないじゃん。
なんだ、偉そうなだけの初心者かw
なんでこんなに殺伐としてるの?
どっちもあほくさ。
過去ログ読まんで質問するアホ 質問よく読まんで答えるアホ
cmd組み込みechoじゃなくてecho.exeを呼びたいんだけどどうやって呼ぶの? >echo.exe TEST .exe TEST これなぜ?
頭になんかつけるだけ
なるほどフル指定すればいった この変な感じなのはechoだけなのかな? 手元のcmd.exeでいろいろ試したところ、echoに続く1文字が []:;/\.,+=( だと区切りと解釈するのか、後に続く文字をechoしてます。 echo\echo.exeでエコーされていいの?これって常識なの?
>>522 バッチで内部コマンドと同名のコマンドを使う事自体が
そのシステムの詳細設計上まずい。
特に Windows 系では。
>>522 echoに限らず、dirでもbreakでもhelpでもdelでもformatでも同じ事が起きるよ。
526 :
デフォルトの名無しさん :2005/10/19(水) 00:56:14
Win95,98で、取得した文字列を桁数を指定して取得する手段はないですかね? WinXPで言うところの、SET WORD=%TEXTLINE:~2,8% みたいに。 よろしく
528 :
デフォルトの名無しさん :2005/10/20(木) 01:26:01
>>527 やっぱ95,98のバッチコマンドじゃないのかねー
529 :
デフォルトの名無しさん :2005/10/31(月) 22:09:08
質問ですけど Windows95で内部コマンドを知るのにどうしたらよいですか? % や & や : などの記号もヘルプが(たぶん)ないので理解しづらいです
またスゴいネタが来たな まさか本気ってことは無いだろうけど ネタだとわかっていても笑える
Win95なら古本屋か図書館にでも行って DOS用の解説書をあさるのが吉。
533 :
デフォルトの名無しさん :2005/11/01(火) 04:33:19
スタートメニュー ヘルプ Windows95の使い方
534 :
529 :2005/11/01(火) 20:11:52
>>533 みつからないです
95のDosはファイル内の文字を書き換えるコードが書けない。結構、不満だ
sed使え
そういえばedlinとかあったね
>>534 パッチ(command.com)の機能だけで何もかもやろうと苦労するより
便利で高機能な外部コマンドが使えるのなら
それらを組み合わせて使う方が良い。
>>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窓に出てこないし・・・。
>>541 リダイレクトでそれらを分離することができないので無理。
同じバッチファイルを起動するごとに true:とfalse:に交互に飛ぶ処理はどうやって書けばいいんでしょうか?
環境変数やファイルに記録すればいいだろ。
545 :
デフォルトの名無しさん :2005/11/09(水) 11:56:50
バッチファイルでAというフォルダー全体を、WINRARで圧縮して Bというフォルダーの中にファイル名をその時の日付で(2005/11/4.rar)保存するという様な 作業は行えますか?
>>545 行える
でも圧縮する部分はバッチファイルプログラミングの話ではなく
WinRARのコマンドライン操作の話だ
特定のファイル(圧縮ファイル)を特定のフォルダ以下に日付名で移動するってのも
単なるコマンドの使い方の話だ
プログラミング関係ないのでスレ違い
因みに"/"はファイル名使用不可文字なので「2005/11/4.rar」ってのはどうやっても無理だ
「2005/11/04.rar」「2005-11-04.rar」「2005_11_04.rar」「20051104.rar」とかにするしかない
>545 こんな感じ? winrar a -agYYYY-MM-DD c:\backup_saki\ c:\backup_moto\
548 :
デフォルトの名無しさん :2005/11/09(水) 23:31:53
(´-`).。oO( 居たとしたら何だというのだろう… )
550 :
デフォルトの名無しさん :2005/11/10(木) 00:07:18
>>549 いや、どういう使い方してるのかなって思って。
>>548 そんなアプリ使わなくてもVBSでCDO.Messageつかえば簡単にメール送信できる。
>>551 そうじゃなくて、メールをトリガーとしてバッチ走らせようってんじゃないのかい?
とりあえず、業務でそんなことやりたいとは思わないけど。
バッチそのものをメールで送れるようにすれば結構スリリングだな
んでもって、ウィルスチェックソフトに実行ファイル送付で引っかかってアボンww ユーザー「起動しませんよ・・・?(´・ω・`)」
>>552 UNIX系では良くやる。
.forwardに、
| hoge.sh
とか書いておくと、メール受信したときにメール内容を標準入力としてhoge.shが起動する。
cygwinでも出来るかも知れんがよく知らん。
バッチを実行するとどうしてもDOS窓が一瞬開くのですが・・・ 消す方法とかってご存知ですか? 一応過去ログざっとさらい&ぐぐってみたのですが該当情報なし・・・ OSはWINDOWS XPです。 初心者っぽい質問ですみません。お答えいただければ助かります・・・
正確には消す、ではなく 「バッチ実行時にDOS画面をまったく表示しない方法」をご教授いただきたく。
プログラミングの話かな?
PIFの設定で最小化で起動とかにすればいい
あああ、ごめんなさい、プログラムの話ではないですね・・・すみません。
>>559 PIFの設定・・・って・・・?あ、自分で調べてみますね。ありがとうございます。
563 :
デフォルトの名無しさん :2005/11/12(土) 19:14:35
ご教示ください。 特定のユーザのログオンログオフ時刻を集計したいと 考えています。テキストファイルで残したいのでEventquery.vbs を利用したバッチファイルを作り、取得しているのですが、 日付順でのソートができずに困っております。 何かよい方法あるでしょうか?。
はい
日付の書式きめたやつってほんとうざいよね 01-Apr-2005 01-Nov-1995 01-May-3005 01-Sep-2005 01-Sep-99 単純にソートかけてこんなんなんだぜ
一時的にSETあたりで、アルファベット綴りの月表示を数字に置き換えてやると よろしい。西暦2桁には19をつけるように前処理を。 それにしても3005年っつーのもスゴイ話だがw typo大杉 もちけつ
なんでもバッチでやろうとするのはアホ
なんでもバッチでやろうとして出来ちゃう奴はある意味甜菜 なんでもバッチでやろうとするけど出来ずに他人に頼る奴はアホ 適材適所を選ぶのが凡人 漏れ、凡人だぁヽ(`Д´)ノ
俺はVBScriptでやろうとするとノートン先生に怒られるんで、仕方なくバッチでやってるな
>>568 スレタイ嫁。Script類は出来る事の守備範囲は広いが、
>>570 と同感で、
ファイル毎に許可出すのは精神的に疲れる。バッチで出来ることの限界を
突き詰めるのも一興かと。
おまいは単なる脱落者。拳法モノで跡継ぎを自認していたのに、お師匠さん
から免許皆伝してもらえず、正当な跡継ぎに食って掛かって最後にやられる
悪役。丁度そんなカンジw
まぁまぁ。
熱いねぇ
Scriptなんか弾くなよ Scriptウィルスなんかに引っかかるようなレベルの奴がこの板に来るなよ
いまどきバッチしかできない珍しいプルグラマ
>Scriptなんか弾くなよ ノートン先生に言いなよ。
577 :
デフォルトの名無しさん :2005/11/19(土) 19:11:09
大子宮知りたいです。 標準入出力に対応したテキストソータで、ランダムソート(シャッフル)ができる外部コマンドありませんか? 10000行くらいに対応してくれればいいんですけど。 草々。
外部コマンドでよければ
外部コマンドならあるけど、ここでする話題じゃないな
580 :
デフォルトの名無しさん :2005/11/19(土) 19:30:15
581 :
577 :2005/11/19(土) 21:02:58
>>578 、579様
いや、作っているバッチファイルの途中でテキストファイルをかき混ぜる必要があるんですよ。板違いですか?
ここはバッチファイル『プログラミング』スレであって コマンドだのなんだのを語るスレじゃないからなぁ
>>581 CやPerlでstdinをシャッフルするコマンド作れ
batじゃ困難
環境変数駆使すればできそうだが・・・
つか外部コマンドでいいならなんでもできるだろ
複数のコマンドを順次実行させるのが本来の使い方なんじゃないの?
>>585 どんなに不向きでも何が何でもバッチファイルでやるのがこのスレの趣旨だと思うなら
回答を示してやってくれ。
暇だから頑張ってみたいけるバッチで 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 あ、できた。サンクスコ。
PATHはsetなしでも読み書きできるけど、
LIBやINCLUDEはsetつけないと書き換えられないね。
PATHだけは特別な環境変数なのかな?
pathっていうコマンドを特別にサポートしてるだけ。
質問する前にヘルプぐらいよめ
ああ、ここバッチコマンドスレじゃなから そういう話はどっかよそのスレでやって
>>592 なるほど。DOSとの互換性でそうなってるのか。
>>594 Windows板いったけどそういうスレなかった
スレなかったらパソコンの使い方まで教えろってか
598 :
デフォルトの名無しさん :2005/11/21(月) 23:12:06
>>598 このスレの for /f で始まるのはみんなそれだ。
>>599 どもども
>for /F "delims=" %i in (ファイル) do 処理
これでいけた。なんかへんなオプションの指定の仕方に戸惑ったけど
慣れるとこりゃ便利だわ。
便利って言うかなんでこんなコ汚い文法なのかと
Windows Meでの挙動について質問です。 ・直接バッチファイルをダブルクリックして実行できるもの ・DOS窓からバッチファイル名を入力すれば動作するのに ダブルクリックだとエラーになるもの これらの違いって何でしょうか? 具体的には、renやdelはダブルクリックで実行できたのに対して moveができませんでした。他にもDOS窓での実行を確認済みの perlでテキスト処理させるコマンドをバッチファイルに記入して ダブルクリックすると、エラーでした。 動かせる方法がわかってるのだから 素直にDOS窓でコマンド打ち込んどけ、とも思うのですが、 原因がわからないと気持ち悪くて・・・ ご存知の方いらっしゃいましたら、よろしくお願いいたします。
>>602 前者はcommand.com内蔵。
後者は外部にCOM/EXEとして存在している。
というわけでPATHの設定を疑ってみるが良ろし。
------------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ファイルを実行する方法が あればいいのですが・・・
なんていうかcallでいけそうなんだけど、callだと、 呼び出し元、呼び出し先どちらでsetlocalをしても 上手く機能しないんですよね。 バッチファイル中のsetlocalをコメントアウトして、コマンドから、 >setlocal ENABLEDELAYEDEXPANSION >call c:\config.path としても、遅延評価は有効にならないためPATHに"!PATH!"という値が入ってしまいます。
バッチの中で環境変数変えてもバッチが終われば元に戻るから setlocalの必要性がいまいちわからんが setlocal call 環境設定.BAT endlocal バッチの中でこうやったら問題なく動いた
607 :
602 :2005/11/23(水) 10:06:03
>>603 ありがとうございます。
MOVE.EXEをフルパスで記述することで解決しました。
デフォルトでPATHが通ってるもんだと思い込んでました。
Perlの方は3桁の通し番号で出力させるために%03dという記述をしていて
それをバッチファイルに書いたための誤動作と判明いたしました。
即レスいただいてたのに遅くなってすみません、ありがとうございました。
>>605 これなら ENABLEDELAYEDEXPANSION しなくてもいいよ。
for /F "delims=" %%i in (aaa.txt) do call :sub %%i
goto :eof
:sub
if not "%1" == "" set PATH=%PATH%;%1
>>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、バッチプログラムから呼び出しと
どちらからでも使えるような環境変数設定用バッチファイルを書きたいのですが、
なかなか難しいです。
610 :
608 :2005/11/24(木) 00:05:40
>>610 うおこれはいいです!
for /F "delims=" %%i in (c:\PATH.txt) do call :sub %%i
goto :eof
:sub
if not "%1" == "" set PATH=%PATH%;%*
これでenabledelayedexpansionもいらず、パスもちゃんと設定されました。
ありがとうございました。
欲を言えばreturnがあればよかったなあ、なんて・・・
あるじゃん
>>613 returnなんてある?returnはないし、
1ファイルに1関数しか書けなくない?
goto :eof
あーなるほどこれでいいのね。 @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%;%*
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 バグ? どうすればいいでしょうか? 何が悪いのでしょうか?
>>618 WinXP Pro SP1a 再現せず
WinXP home SP1 再現せず
以上。
どう見てもプログラミングには見えないが
621 :
618 :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
@echo off echo %~s1 pause 正常: C:\123456.abcd C:\ABCDEFGHI\123456.abcd C:\ABCDEFGHIJ\123456.abc C:\ABCDEFGHIJ\123456.abcd 異常: なし
623 :
618 :2005/12/01(木) 02:32:39
>>622 うそ〜ん、“C:\ABCDEFGHIJ\123456.abcd”のショートファイル名が
“C:\ABCDEF~1\123456~1.ABCd”になるよ。(最後のdが余分)
末尾のヌルターミネイトがおかしい。
Windows XP SP2で2台試したけど両方おかしかった。
インストールしているアプリとか構成が似てるから検証にならないかも
しれないけど。
俺だけか〜い。
Win2kでTASKKILLみたいな事って出来る? 「出来る」だけってのは勘弁して下さい
>>624 出来る"よ"
出来る"るけど、何か?"
"これに"ヒントがあんだね" サンクス。
↑間違い コマンド"exe"ってことだよね
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行書くのも面倒なので何かいい方法はないでしょうか?
630 :
628 :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がうまくいきません。 ファイル名、ディレクトリ名、またはボリュームラベルの構文が間違っています。 というエラーがでます。 どう改良すればいいですか?
ヒント:ネスト それと、たいして調べもせず「調べたのですが」とか言い訳して諦めるな 一度回答を貰ったら最低一週間は自分で調べろ 一週間調べてもどうしてもわからなかったらまた来い
>>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文字で末尾をけずって回避したら?
633 :
632 :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" --------------------------------------------- この例ではショートファイル名にもなってないし。
ロングファイル名とショートファイル名まぜこぜにして使うやつがアホ どっちかに統一しろ
ぷ
636 :
618 :2005/12/02(金) 13:17:14
>>632 検証、ありがとう。俺だけじゃないのがわかって良かった。
ActivePerlでファイル名を引き数にするようなのを実行するのに、
C:\perl\bin\perl.exe スクリプト名 ファイル名
というような例を自サイトで書いていたんだけど、ファイル名に空白を
含むと上手く動かなかった。
ダブルクォーテーションで括っても駄目でショートファイル名にして逃げてみた。
そうしたらアクセスできないファイルが出てきて気が付いたんだな。
“例”として書いてただけで、俺にとっては実害はなかったんだけど
気になってたのよね。
637 :
デフォルトの名無しさん :2005/12/03(土) 13:55:01
> 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(^Д^)プギャー
>
> つーかこんなもん、この板の住人が金払ってまで欲しがるとは思えないな
> フリーなら使うかも知れないけど、そうじゃなければ欲しけりゃ自分で作るって
>>631 わからないから聞きに来てるのに
> 一度回答を貰ったら最低一週間は自分で調べろ
ってバカじゃねーの。1週間とか言ったら手で作った方が早いだろうに。
自分がneetだからって他人もそうだと考えない方がいいんじゃね?
日がな一日板に粘着、得意がって小出しにして面白い?
>わからないから聞きに来てるのに にも関わらず、回答が得られないからと逆切れするのは如何な最中と。
おまいら厨を相手にしてやるなよ
質問に答える義務も義理も無いしな。
答えられないなら黙ってればいいのに。 下らない煽りでスレ荒らしていったい何が楽しいのやら。
楽しい
流れ的に非常に聞きにくいのですが、質問というかお願いというか。 普段Wacomのタブレットを使っています。私の場合、GD-0405-Rというものなんですが。 このドライバというかサービスがXP上でよく使用中に落ちてしまいます。 そうすると管理ツールのサービスからTabletServiceを再起動させる訳なのですが、 そのためにマウスを使うのがわずらわしいのです(ぶっちゃけると)。 起動時にC:\Windows\system32\WTablet\TabUserW.exeがスタートアップとして起動されるようなのですが、 サービスを停止させ、試しにこの一行をバッチファイルにして起動させても何も起きません。 管理ツールをわざわざ開かずに、バッチファイルなどでこのサービスを再起動させることは 可能でしょうか。ショートカットキーを割り当ててマウスを使わずに再起動をかけることが出来ると 有難いのですが、、そんなこと出来ますか?、、、レスが長くなってしまいました。
647 :
645 :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に詳しい日本人の典型なのですよ
649 :
628 :2005/12/08(木) 03:16:41
質問してすっかり忘れてたけど、ドライヤーで髪乾かしてるときにふと思いついたら なぜかできた。 for %%A in (1 2 3) do for %%B in (1 2 3) do md %A_%B 計算プログラム眺めてたときにループの中にループが入ってるのがきっかけだったな。 ただ、構文のなかにもう1つ構文入れるなんてなんか反則くせーと思ってしまった。
>>649 そういうふうにしろって
>>631 に書いてあるだろ
> ネスト
> プログラミングにおける、入れ子構造。または、入れ子にすること。
その辺の常識はプログラム作ったことがないやつには通じない可能性があるな プログラム知らないやつがこの板で質問するのが間違いということもあるから Windows板へで質問した方がよかったかもな
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 じゃないのは何で?
試せばわかるだろ
出来てなくても全然問題ないけど for %i in (`for %j in () do `) do こゆーのはダメとか、なんか変な気分 バッチの仕様って誰が管理してるの?
オレオレ(^ω^)
公的な仕様があるわけじゃないし、ある環境で動いて違う環境で動かない場合もある。 動く保証はどこにもない。 そのへん割り切って使うこと
658 :
デフォルトの名無しさん :2005/12/08(木) 22:35:35
早く654が死なないかなぁ… そしたら良スレになるかもしれん
654が氏ぬのを待つより試した方がずっと早い。
多分もうすぐ死ぬよ
試さなくてもわかったけど
一応試したら予想通りの結果
>>653 質問するまえに自分で試せ
このスレには一級品の奴がいるわけでもないんだよなぁ。 知ったかぶりは多いけどさ。 あ、このスレに限った話でもないか。
>>662 一級品のレスかどうか見分けられるあなたは
間違いなく一級品ですよ。
664 :
デフォルトの名無しさん :2005/12/09(金) 20:25:37
>654 試さなくても判るよ ただ何でか知りたかったの なんでそんな事いちいち説明せなわからんのかな? 馬鹿みたい
わかってたら>653の質問はありえないんだが
653って質問には見えないけど・・・
667 :
デフォルトの名無しさん :2005/12/10(土) 01:53:15
ある指定したディレクトリ以下のファイルをディレクトリも含めてdelする ようなバッチをくみたいのですが、del だとディレクトリだけ残ってしまいます。 どうくめば良いでしょうか?
rd /s/q
ありがとうございます。しかし rd はワイルドカードがきかないようです。
for
やってみまつ
少しは反省したようだな。何でもググレとかちったぁ調べろとか 上からモノいってるばかりじゃ駄目だよ。あんたらにも分からん分野いっぱいあるだろ? んで質問。任意のテキストをTXTファイルに挿入って出来ますか? 教えて下さい
死ね
>>672 では教えましょう
> 任意のテキストをTXTファイルに挿入って出来ますか?
出来ます
条件後出しで「具体的なやり方を教えて」とか言わないでね
君は出来るかどうかを聞いたんだから
675 :
デフォルトの名無しさん :2005/12/10(土) 23:49:12
ここみてみなよ・・・・
echo 任意のテキスト >>TXTファイル
ありがとうございます! そうかぁechoってプロンプト内の確認用かとおもてた 思い込みはいけませんね
TXTファイルの任意の数行を別のTXTファイルに置換 ってバッチファイルでどうやればいい?
679じゃないけど、forの続きが知りたい今日このごろ・・・
続きは半角スペースだよ それ以降は自分でやれ
バッチ作んなくてもfindで一発かもな
forの次はスペースって・・・ まぁ、予想通りの回答でツマンネ
最近、知識も無いくせに取り敢えずforってレスする低脳がいるなw
> 予想通りの回答 予想もしてなかったのにこういうこと言い出す子ってよくいるよねw > 知識も無いくせに そうやって煽れば具体的な回答が返ってくると思って 自演で煽り入れる質問者って良くいるよねw
for
>>687 それも想定内だ^^
もっとひねっておw
689 :
FOR :2005/12/25(日) 00:46:11
レイザーラモンHG
SAY SAY SAY (`Д´)
笑ってる人を「怒ってる」と言い出すのは、 笑われた内容が余程癪に障ったり図星だったりで 自分自身が怒ってる証拠
>>692 何だか知りませんが、そんなに怒らないで下さい。
何か嫌なことでもあったんですか?
今日はクリスマスだからな
>>693 おまえ、哀れだな。
相手を貶めようと書き込めば書き込むほど、
己を貶める結果になってしまっている。
とりあえずそんなにカリカリしないで落ち着きなよ。
殺伐としたスレになってきましたw やれやれー!
何かレスが異常に早くなったなw そんなに悔しがらなくても良いじゃんw
699 :
693 :2005/12/25(日) 23:03:58
>>695-696 そんなに気に障ることを書きましたか?
あなたを貶めるつもりなんて全然ないんですけど・・・
>>699 ゴメン、ちょっとおまえを踊らせてみたかっただけ。
悪気は、、、、、チョットあった。
やっぱり怒ってたんだねw
一番怒ってるのは691みたいだね 相当気に障ったようだなw
いや、実は・・・一番怒っているのは
一番怒ってるのは俺だよ。うっとうしいからからやめなさい(怒)
一番笑ってるのは707みたいだね 相当ツボに入ったようだなw
怒ってる人を「笑ってる」と言い出すのは、 怒られた内容が余程ツボにはまったり的外れだったりで 自分自身が笑ってる証拠
何だか知りませんが、そんなに笑わないでください
質問には答えないけど、馬鹿にされると黙ってられないバッチプログラマw
pause && tail -1 %0 >>%0 バッチてものすごいね、こゆー動きが新鮮だった バッチってリアルタイムで実行するんだ?
ラーメンタイマー。渾身の力作です。 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
ただーキタコレ
渾身も何もping使ったタイマーは、昔から腐るほどサンプル転がってるだろ。 外部ツール使わずに一番手軽に出来る方法だからな。 それ以外は特別なことしてるわけじゃないし、 それどころか間違いではないけど無駄が多い。 Setで/aオプション使うときは set /a cnt=cnt-1 と%で囲わなくても変数展開して演算できるし、この場合 set /a cnt-=1 で事足りる。 set /a cnt=%cnt% はループの外でいいし、Nullがあり得ない if "%cnt%"=="0" goto :fin に""は要らない。
>>716 話の流れ的には、:loop 〜goto :loop は
for /L %%c in (%cnt%, -1, 0) do (
echo 残り%%c秒
ping -l 1 -n 2 localhost>NUL
)
でいいんじゃないか?
>>718 まあ、いちゃもんつけるだけなら誰でもできるからね。
俺の渾身 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
俺の混信 @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%とか細かいことは気にするな
>>722 n の初期値が 180 固定ならいいけど、元の渾身の作だと
0 もありうる。その場合に、
>>722 だと相当長い間帰っ
てこなくなるので、悪いけど没だな。
ファンが鈴鹿風にうなり続けた 最悪だこのひとたち
>>719 > まあ、いちゃもんつけるだけなら誰でもできるからね。
いちゃもんつーか、指摘だろ
gotoによるループではなくfor使った方がいいと指摘してるおまえと
setやifの使い方指摘してる718と話のレベルとして何が違う?
前半だけなら「いちゃもんつけるだけ」かもしれないけど、
後半も含めていちゃもんつけるだけというなら、君も同じだよ
まーまーまーまーまー
>>725 ごめんね。
ずいぶんレベルの低い「指摘」を得意げに書いてたからさ。(w
それ以下のレベルの指摘をしてる本人が言えたことかw
バッチを実行した時、実行後もウィンドウを閉じないようにするには なんと命令すればよろしいのでしょうか? 以前、STOPと書けば、うまくいったような気がしたのですが・・・ よろしくお願いします。
cmd.exe
ぱうせ
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 を入れれ
ばいい。
735 :
デフォルトの名無しさん :2006/01/13(金) 16:02:36
教えて下さい。 対象フォルダ内の全ファイル及び全フォルダを削除したい のですが。対象フォルダは、共有指定がされています。 既出の 237: では、対象フォルダ削除後に、同名でフォルダを 作成し、対象フォルダ内の全ファイル及び全フォルダを削除と 同様の効果がありますが、共有しない状態になると思います。 よろしくお願いします。
>>735 全ファイル及び全フォルダを削除したいだけなら、
新たに作らなきゃいいだけでは?
それとも新たに作って共有をかけたいのか?
文章が矛盾してて何をどうしたいのかわからん
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
畜産高校では百年に一人の天才プログラマーのレベル ≒ 情報処理系の高校で1年目の夏休みを待たずに消えていく落ちこぼれのレベル
>>740-741 おまえら、何言ってるの?
突っ込みどころが違うだろうが!
俺なら
>>739 にこう言う。
"100年前 の日本人に プログラム なんて組めた奴は いねぇよ"
だなw
ふっ、決まったぜ!
「百年に一人」の意味をこれほどまでに勘違いしてる子は初めて見たw
>>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」と答える方法が分かりません。 宜しくお願い致します・・・。
echo Y > input.txt echo Y >> input.txt chkdsk < input.txt
747 :
デフォルトの名無しさん :2006/01/18(水) 19:07:10
Windows のコマンドプロンプトって sleep ないのな。ていうか標準で外部コマンドにない。 しょうがねえからフリーソフトインストール したよ。
ping -l 1 -n 2 localhost>NUL
>>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 おおお!ありがとうございます!これすごいです。
なるほど、( )でくくって一つのコマンドに見せて、内部では&で結んで二つのコマンドを
連結しているわけですか・・。これ採用させていただきます。
本当に助かりました。
chkdskの自動化ではなく >Windows2000がよくエラーするので を何とかするという発想はないのか
752 :
デフォルトの名無しさん :2006/01/20(金) 00:06:32
(*) がゴリライモのへそに見えた
教えてください。 xcopyでデータをバックアップしたいのですが、フォルダ名にスペースが 入っていると出来ないのでしょうか? こんな感じ ↓ XCOPY C:\Documents and Settings\Owner\aaa\*.* \\Server\aaa /D /E /Y WinXP HE SP2です。 よろしくお願いします。
>>755 すいません。ググってて見つけました。
初歩的な質問でごめんなさい。
ありがとうございましたm(._.)m
757 :
デフォルトの名無しさん :2006/02/12(日) 21:03:16
訳あってググれない環境なので質問してます。 テキストファイルの内容を順次環境変数に代入するってどうすればいいですか? 1行目をX1、2行目をX2、みたいに配列的に扱いたい場面に出くわしてるんですけど。 読み込みたい内容そのものは多くても10行程度ですが不定です。
>>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
:*/
sedやawkが使えればもっと簡単になるけれどね。
760 :
757 :2006/02/12(日) 21:53:40
758さん、さっそく、ありがとうございました。 あと、awk使えます。が、作っているのが、会社のいろいろなパソコンの保守に必要な情報収集ツールで、とりあえずどのパソコンでも間違いなく動作するってことでバッチにこだわっています。 でも、バッチでは無理というのでしたら、758さんのおっしゃるようにWSHも視野に入れてみたいと思います。
(´-`).。oO(2ちゃんはできるのにググれない環境ってどんな環境だろう?)
[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 を使ったほう
がいいと思う。
どうせファイル読むんだったらバッチファイルへ出力してそれを実行
AWK使えればこれだけで済むね awk "{print \"set X\" n++ \"=\" $0}" foo.txt > setenv.bat call setenv.bat
765 :
757 :2006/02/13(月) 00:08:17
>>761 読むのは京ポンで。書き込みは、別目的用の社用PCを使って、あらかじめ書き込む文章をファイルにしておいて、他の目を盗んで急いで書き込んで(貼り付けて)るんですよ。
>>762 それいけそうです。早速明日試してみます。ありがとうございました。
766 :
デフォルトの名無しさん :2006/02/13(月) 13:04:47
バッチで設定してもそのバッチを動かしたシェルとかプロンプト窓閉じると無くなっちゃうよね
>>766 そう。
コマンド拡張機能は、ディファルと ON の癖に遅延環境展開
機能は OFF のため cmd.exe を /v:on で呼ぶ必要がある
ため。
コマンドプロンプトのショートカットに /v:on を入れておく
か、レジストリをいじれればできたような気がする。
どうしてもと言うなら、
>>758 のようにバッチファイルで
バッチファイルを生成して、call するぐらいしか思いつかない。
て言うか、そんなことするぐらいなら
>>762 に書いた通り、
全部 wsh でやる方が勧め。
はいはいsetlocal setlocal
>>768 ネタなのかはたまた真性なのか…。
どっちかって言うと setglobal が欲しいなぁ。
export でもいいや。
setxならあるけどな〜
何を期待しているんだか
ComSpec=cmd.bat にしてたことあるよ、cmd.bat内でcmd.exe起動
お暇な方いらっしゃいましたら教えて下さい set /a で計算結果を環境変数に代入したいのですが整数しか ダメなのでしょうか? (12.33444とかは無理?) くだらない質問ですみません
仕様なので無理 小数位が5桁なら*100000して計算白
ラベル使わないでバッチファイルから復帰する方法は無いのですか?
GOTO :EOF
>>774 ありがとうございます。
そうですかぁ・・・
バッチからEXEを起動するときの引数で使いたいのですが
そうすると*100000ではダメなんですよね・・・・
もう少し詳しく書くと360°をある数で等分した場合の角度をEXEに渡してやりたいのです
なにかいいアイデアはないでしょうか?
>>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
>775 call付けず空のバッチを呼ぶ >777 それこそexe内で、バッチは体育会系
>>778 すみません。わかりません・・・
前半はバッチに書き込むわけではありませんよね?
私、バッチをかじりだした程度なので理解できません
VBSってやつですか?無知ですみません
>>780 ' hoge.vbs
から3行が VBScript (WSH)
これをfor文の中の「cscript //nologo hoge.vbs %1」で呼び出して使っている。
VBScriptもRunメソッドで他のプログラムを実行できるので
すべてVBScriptでやってしまうという手もある。
>>781 hoge.vbsとhage.batのふたつのファイルを作るということでしょうか?
最後の
>hage 123
foo.exe 2.92682926829268
は「こうなるよ」ってことですよね
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勉強してみます。せっかくいいアイデアもらっても理解できないんじゃだめですもんね
みなしごバッチには親プロセスが 存在しないのですか?
net start | find "hoge" の結果を 環境変数TMP_LISTにセットしたいんですけど、 どの様に記述すれば良いでしょうか? もしかしたら、初心者スレとかに書き込む内容かもしれませんが よろしくお願いいたします。
windowsでSyncToyみたいなバックアップ処理ををバッチで作りたいんだけど、 xcopyじゃ無理だった・・・ どうすればいいんでしょうか
>>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 とかで組んだ方がいいと思うよ。
二点間の%time%の差をとるのってどうやるの?
できないことはないけど面倒
CMDのウィンドウキャプション変更するコマンドってないの?
ラーメンタイマー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
>>793 ためしに使ってみたんだけど
残り−1秒で止まったままなのはどして?
796 :
795 :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
バッチコマンドの引数に渡されたファイル名の拡張子を見て 条件分岐で処理を変えたいのですが、拡張子判別の部分は どうすれば良いでしょうか?
goto label%~x1 label.txt: label.log: label.ini:
799 :
797 :2006/03/05(日) 16:55:50
ありがとうございました。
ただ対応するラベルがないと即死するから素直に文字列比較した方がいいかも
for %%i in (txt log ini) if /i ".%%i"=="%~x1" goto label%~x1
802 :
デフォルトの名無しさん :2006/03/06(月) 01:04:00
デスクトップを表示って、バッチでできますけ? ミ田+Mの動作です。
taskkill /im *
デフォでtaskkillサポートされてないっぽいWin2k
ウィンドウズ板で聞け
バッチ窓にテキストファイルを次々にドロップしてその順に結合するってできますか? SET /P でやったらファイルのパスが代入されました・・・・・orz
プログラミングに関係ないことはウィンドウズ板で聞け
関係なくもないんじゃない。 バッチ窓にって書いてあるし
このスレのスレタイは・・・・・ はい、大きな声で バッチファイル プ ロ グ ラ ミ ン グ
>>806 がいってるのってプログラムじゃないのか?
パスが取れたんなら後はつなげればいいだけじゃん type %filepath% >> target.txt
バッチ窓って何だ?
社会の窓と似たようなもの
バッチ窓 の検索結果 2 件中 1 - 2 件目 (0.51 秒)
ま、バッチ窓と聞いてピンと来ない奴は、この業界のもぐりだけどなw
>>811 どうもありがとう。できました
住人のみんなもありがとう
んでもうひとつ聞きたいんですが・・・
テキストファイルをFORループで一行ごとに切り出して別のファイルにリダイレクトし
ある文字を読んだらそこで終了するっていうの作ったんですが
2万行とかあると処理時間がけっこうかかるんですね。
で、そのある文字ってのは必ず元ファイルの最後の2,3行に現れるんで
逆順に処理するとか全く別の方法でやるとかできないですかね?
お願いします
テキスト処理いろいろやりたいなら rubyとかpythonとかのまともなスクリプト覚えろ。
>>818 ・・・・・・・いいかげんにしなよ・・・・・
みっともないぜ
まったくみっともないな。 テキスト処理ならawkかperlだろ。
ここでなら"バッチ窓"で大抵通じるだろうけど、 "バッチ窓"が間違いであることも揺るぎない事実。
sed -e '/ある文字/,$d' < テキストファイル > 別のファイル
1行づつやらずにまとめてやっちゃいかんのかな
>>822 'sed' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と出るのですがCMD ONでやるのですかね?
>>826 フリーソフトを使えってことになるのかな?
会社で使いたいんですけどウチの会社フリーソフト一切ダメなんですよ・・・・・
ソフト使えないくせにbat使おうなんて・・・・ 矛盾してるね。 「遅い」とか、当たり前のこと言ってるし。 釣りにしか見えない。
>>828 ソフト使った時点でバッチじゃねぇだろw
出来ないといえばいいのになw
そもそもバッチ処理をするための物だからバッチファイルと言うのだが
じゃ訂正 ソフト使った時点でバッチ使う意味ねぇだろw
>>831 みんな、遠まわしにそういっているようだが・・・
つか、ソフトを使うためのもんだろ。>バッチ
>>824 質問だがファイル数は何個くらいある?
一番いいのは、フォルダに入れて名前を
入れたい順番に規則付けしてれば
ドラッグアンドドロップしなくても済むけど。
プログラマだから自分でツール作れるけど バッチぐらい使えないといざというとき手も足もでない。 だからあえて使い続けてる。 バッチならたいていのパソコンでつかえるからな
836 :
834 :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
それってすでに終わった話だろうけど 1つずつD&Dはださくね? 普通はまとめてD&Dかフォルダごとだろ
ああ、まとめてだと順番かえられないか
>>836 あぁ・・説明不足すみません。
数ある元のテキストファイル中のある文字以前を別のファイルにコピーして
それを10ファイル程繰り返して結果ひとつのファイルにしたいのです
ファイルを結合してある文字だけ抜き消し去りたいのです
>>817 ですでにできてるんだろ
バッチなんてそんなものだ
終了〜
特定のバッチファイルを実行する時にアイコン変更することって出来ますか?
843 :
デフォルトの名無しさん :2006/03/13(月) 01:02:18
聞いたことない もしあるとすれば、↓こいつが教えてくれる
| ↑ |______|
845 :
デフォルトの名無しさん :2006/03/13(月) 22:14:05
コマンドの実行結果(文字列)を環境変数に入れたいのですが、出来ますか? 例えば、dir c:¥ | find "ファイル" の結果等です。 よろしくお願いします。WIN2000です。
できます。 ↑ やり方は、 | こいつが教えてくれる
##!! 標準出力を取り込む @echo off for /F "usebackq delims=" %%i in (`dir`) do ( echo %%i set xxx=%%i ) echo %xxx%
変数%s%がXXXX=YYYYの形式だったら%t%にYYYYを抜き出すというコードはどう書けばいいでしょうか?
>>834 > 質問だがファイル数は何個くらいある?
How many files(0-15)?
850 :
デフォルトの名無しさん :2006/03/17(金) 21:31:21
cmd 起動時にそのウィンドウだけ、簡易編集をオフにしたいのですが どのようにすればよろしいでしょうか?
それのどこがプログラミング?
しかしこやつはいったい何ゆえにこんな地味なスレに粘着しているんだろうか・・・
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 ←こういう奴が出てくるとスレのレベルが下がる。
パソコンの使い方から教えるのかよ
>854 >856 そこまで言うのになぜお前が答えてやらない
860 :
デフォルトの名無しさん :2006/03/17(金) 23:09:49
>>859 早く違いを教えてあげろよ
話があるならそれからだw
スレ違いというやつが気に入らなかったら 俺なら質問に丁寧に答えてやるけどな
>>850 スレ違いだからスルー
スレ違いじゃないけど馬鹿だから答えられません
例のバカさえいなきゃ結構良スレなんだがな・・・・
865 :
http://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
バッチファイルでインターネットエクスプローラのプロキシの設定を変更する方法を教えてください
バッチでやる意味があるかな?
実行したいコマンドの内容をテキストファイルに書いて拡張子をbatで保存 ただそれだけだ
なんか意味分からん
コマンドラインからプロキシの設定を変更する方法は知ってる前提だよね それじゃないとプログラミングは無理
ここはパソコンの使い方を教えるスレじゃないから
教えるも教えないも大した事じゃねぇよ。 あほくさー
(注)春厨ならぬ万年厨に餌を与えないでください
>>866 バッチでできるが、使い方によっては
>>867 の言う通りで
バッチを使わずにフリーのプロキシ切り替えソフトでも
使った方がいいんじゃないか?
>>872 Windows2000以下のOSで使用できるコマンドラインあるか?
>>873 何でもパソコンの使い方を教えるスレじゃないとか言う前に
バッチでできるかできないか考えてから言ってみるがいいぞ。
プロキシの設定の変更ならバッチ使わない方が楽なわけだし、 わざわざバッチでやるなら何か意味があるんだろ。
>>876 regedit.exeならwin95以降でコマンドラインから使えるよ
879 :
デフォルトの名無しさん :2006/04/07(金) 23:03:45
MSDOSバッチで起動中アプリを終了させる方法は?
taskkill
881 :
デフォルトの名無しさん :2006/04/07(金) 23:10:32
65秒のご回答に感謝します。 W2kでなんだけどなー♪ (2003鯖じゃなくって)
どのへんがプログラミング?
ここはパソコンの使い方を教えるスレじゃないから
885 :
デフォルトの名無しさん :2006/04/12(水) 08:33:44
IEにプロキシとプロキシ除外の設定をバッチでやるのって可能ですか? OSはXPです。
コマンドラインで設定可能ならバッチで可能だな でもここは「コマンドライン」スレでも「バッチ」スレでもないぞ バッチ「プログラミング」スレだ
知らん癖に偉そうな奴だなw
はいはい
890 :
デフォルトの名無しさん :2006/04/12(水) 15:03:35
>>885 固定の設定の切り替えなら、設定を.regファイルに書き出しておいてregeditで読み込む
画面とか起動パラメータでという話ならアプリを作れ
またか > 866 名前:デフォルトの名無しさん[] 投稿日:2006/03/24(金) 17:02:59 > バッチファイルでインターネットエクスプローラのプロキシの設定を変更する方法を教えてください > > 885 名前:デフォルトの名無しさん[] 投稿日:2006/04/12(水) 08:33:44 > IEにプロキシとプロキシ除外の設定をバッチでやるのって可能ですか? > OSはXPです。
そんなことばかりやっていないでいい加減定職につきなさい
バッチで〜は可能ですか? コマンドラインで 〜 できるソフトを探すなり自分で作るなりすれば何でも可能
悪趣味な釣りしかできない奴は、無いおつむをひねって人の質問にこたえてやれよwww
バッチプログラマってのは技術レベルも人間のレベルも低いねw
> バッチプログラマってのは技術レベルも人間のレベルも低いねw それは例えば895みたいなのとか?
つーかバッチプログラマって何?
そもそもここ質問スレじゃねえし。
おまえの釣り堀りでもないがなw
%v:~0,1% みたいな部分文字列の取得を %%iでやるにはどうすればいいですか?
set v=%%i
echoで表示される位置をひとつ上に移動する方法ありますか。 :loop echo %date% ひとつ上に移動 goto loop こんな感じで使いたいんです
>>902 一つと言わずに、一番上まで移動させてあげよう。
ほれ。
つ[cls]
>>902 NT系OSではansi.sysを組み込む必要があるが
エスケープシーケンス使えばできるんじゃね?
たぶん時計みたいに同じ場所を更新し続けるだけだろうから
906 :
デフォルトの名無しさん :2006/04/27(木) 23:29:39
サーバ内のLOGファイルが定期的に更新されているか確認したいのですが、 バッチファイルで、ファイルの日付を取得する方法はありますでしょうか?
>>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%
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
>>909 何がしたい訳?
おねぇさんに聞かせてごらんw
ヒント:GW
ctty aux format c:
MS-DOS時代に友人とフロッピー交換して互いに変なautoexec.bat仕込んで遊んでたなあ。 懐かしい。
何もディレクトリを指定しなくても…windowsフォルダに入れてるとは限らんし(違
@echo off rem ls.bat dir %* ってのはよく作る。
doskeyつかえよ
cygwin\binにパス通しておけよ
それやったらバッチいらないじゃん
んなこたない。 バッチファイルからUNIXコマンドをつまみ食いできるととても便利だよ。 このスレの回答としては×だけど。
cygwin入ってるならshスクリプトでいいじゃんって話だろ。 バッチファイルの最大の利点は何も追加インストールされていない環境でも動くってことなんだから。
このスレ的には外部コマンドはどの辺までおkなわけ? cmd.exe/command.comの内部コマンド以外は全部ダメ? それともWindowsに標準で入ってるやるならおk?
bash使えてもcmdのがいいじゃんって話だろ。
自分で外部コマンド作った方が早い場合が多いな
>>921 Winに標準で入ってる物はOK、それ以外は自作も含めてNG。
後から何かを入れることを許容するなら、バッチに拘る必要すら無くなるし。
>>924 バッチファイルは拡張子が.batだったら何でもありだと思う。
但し、Windows標準であるものを外部ソフトに頼ったりするのはNGかな。
Windows標準 > 自作ツール > 外部ソフト の順でより上位の
ものがある時はそれを使わなきゃダメ。
でも、Win上でUNIXコマンド叩きたいのは、比較的個人的趣向
なので、”cygwin”でも、自作スプリクトでも構わないと思うけどな。
win板のスレなら特に制限ないからそっちでやれ ここはプログラミングの話限定
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
フェイルネイムなんて縁起でもない名前の所為だったりして
cd x:\tmp → pushd x:\tmp / popd または if exist %failname% ( → if exist x:\tmp\%failname% ( な感じの悪寒
931 :
928 :2006/05/12(金) 00:22:53
>>930 ありがとうございます!教えて頂いた以下のどちらでも
上手く判定できました。感謝です!
pushd x:\tmp
if exist x:\tmp\%failname% (
>>929 後から気づきました・・・
確かに縁起悪い(^^;
cd /d x:\tmp
net use \\192.168.11.2\IPC$ /user:Administrator pushd \\192.168.11.2\c$
934 :
カマル :2006/05/16(火) 10:15:50
ある、バッチファイルを実行した場合、サーバにあるLOGファイルに 時間とPCの名前のを書きたいです。 後はバッチファイルを暗号化したいです。なにかヒント教えてくださいませんか? 宜しくお願いします
>>934 日本語でどうぞ。
>サーバにあるLOGファイルに 時間とPCの名前のを書きたいです。
どこがわかりませんか?
・サーバにあるLOGファイルの名前はわかっていますか?
・時間の取得の仕方はわかっていますか?
・PCの名前の取得の仕方はわかっていますか? 或いは固定でいいのですか?
・ファイルへの書き込む仕様はわかっていますか? 或いは決められますか?
>後はバッチファイルを暗号化したいです。
暗号化する目的はなんですか?
・他人から見えないだけではいけませんか?
・複合化する必要はありますか?
・特定のバッチファイルを暗号化したいのですか? 或いは任意のバッチファイルを暗号化したいのですか?
#どう見てもこのスレ以前の段階だなぁ…
うわ、嫌味な奴が住んでるな
937 :
カマル :2006/05/16(火) 10:38:15
ごめんなさい、 ある、バッチファイルをネットワークに入っているクライアントでそれそれ実行します、その実行するとき、実行したかどうかを確認するために実行した場合Share FolderにありXXX.LOG ファイルに実行したPC名と時間を書きたいです
ごめんなさい、 ある、バッチファイルをネットワークに入っている クライアントでそれそれ実行します、その実行するとき、 実行したかどうかを確認するために実行した場合Share FolderにありXXX.LOG ファイルに実行したPC名と時間を書きたいです
@echo off cd \\SERVERPATH\FOLDER\ rem バッチファイルがサーバにあるなら cd /d "%~dp0" echo %USERDOMAIN% %TIME% >> LOG つう話?
句読点が無茶苦茶だし、日本語勉強しなおした方が医院で内科医。
>>938 それはさておき、後半の暗号化の目的云々がないぞ。
942 :
デフォルトの名無しさん :2006/05/16(火) 14:33:49
説明へたくて ごめん、 ある、バッチファイルをかく、クライアントPCに実行させます。その実行したあと、実行したPCの名前と実行した時間をサーバにあるテキストファイルに書きたい。 たとえば、 サーバに保存した LOG ファイルのないようは CLIENT01 2006.5.16 3:40 CLIENT02 2006.5.17 12:29 問題は、 DOS コマンドで サーバ上にあるLOGファイルにどうやってかきますか?
だからネットワークパス指定して書き込むだけだろ
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
プログラミングと関係ないことはこっちでやれ
初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/ > DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
> wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
> コマンドラインインタフェースに関するネタならなんでもOK。
>>946 別スレへ誘導する前にバッチプログラムとは何かを定義しる!
バッチファイルに1行しか書いてなかったらコマンドなのか?
2行あったらバッチプログラムなのか?
はっきりさせられないのなら、別スレへ誘導する前に答えてやれ。
低脳コピペに何話かけてんの?
同じようなスレが何個もあってもしょうがないし 全部そっちのスレに誘導してやればいいだろう。
うむ、そうする。
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%%ではうまくいきません。何故でしょうか?
しかし役に立たないスレだな
自分にとって役に立たないスレを必死に監視する不思議な人
955が監視中
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:
プログラミングと関係ないことはこっちでやれ
初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/ > DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
> wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
> コマンドラインインタフェースに関するネタならなんでもOK。
こん
あるある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:
&&じゃねーの
関係ねえよ
オレも昔 if.exe とか作って悩んだことがあるのは秘密だ。
パソコン初心者は困りものだな Windowsの起動の仕組み知ってれば そんなバッチ作ることもないだろうに それよりいいかげんHDDかパソコン買い替え
「プログラムの追加と削除」に登録されているソフトウェアを バッチファイルで削除することはできますか?
プログラミングと関係ないことはこっちでやれ
初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/ > DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
> wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
> コマンドラインインタフェースに関するネタならなんでもOK。
>>969 reg か regedit 使って消せばよい。
人はそれを出来ないという
なぜそういう質問が来るか疑問なんだが バッチ使えば自動化できるぐらいで自分ができないことはバッチにもできない。 自分でできることはわざわざバッチ使うまでもない。
プログラミングと関係ないことはこっちでやれ
初心者〜管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/ > DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
> wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
> コマンドラインインタフェースに関するネタならなんでもOK。
>>973 > 自分でできることはわざわざバッチ使うまでもない。
「その操作を 100台のマシンで実行しないといけない。」なんて状況は想像でき
ないんだろうな。
だから自動化と書いてるわけだが
>>977 その「自動化」がバッチの重要な (つーか、それしかない) 役目なん
だが、なにか?
REM
981 :
デフォルトの名無しさん :2006/05/22(月) 05:26:33
>>963 自己resです。
chkdsk.bat をstartupに直接inputすれば、okです。
ありがとう御座いました。
もう次スレは建てる必要ないよね?
といっても、勘違いに踊らされて立てる子が必ず居ると予測。 いつでも踊り手に事欠かないのが2chだからなw
梅
俺はどっちでもいいけど、どっちにしても粘着嵐はこのスレでやめとけよ。 まあニーズは普通にありそうだな。
ないない
立てるんなら
>>1 に、プログラミングと関係ない話題はWin板の関連スレへ誘導するよう
明記しておいてくれ。
毎回、質問→スレ違いで荒れるのは馬鹿馬鹿しい。
どうせアホが一人でがんばってるだけだろ。律儀に相手すんなよ
みんなで広げよう ぬるぽの輪♥
|∧∧ |◕‿◕) ♡ ウフ〜♥ |とノ
>>994 >バッチファイルプログラミングとは・・・・
>・ファイル拡張子が ".bat"
>・複数のコマンドを使い、実行させるバッチファイルを作る
>を満たせばOK!
また荒れそうだなぁ…
いっそのこと、「プログラミング」を取って只のバッチファイルスレにした方が良かったかも…
どうでもいいよ。 どうせ荒らすやつは、テンプレなんて見ちゃないし、 見てても気にしてないし。 スルーしとけ。
うめ
うめ
うあぁっぁぁ 生まれてはじめての999
1000げとwwwwwwwwwwwwwwwwwwwwwwwww
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。