【.cmd】 バッチファイルスクリプト %5 【.bat】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/05/14(木) 11:29:31【.cmd】 バッチファイルスクリプト %4 【.bat】
http://pc12.2ch.net/test/read.cgi/tech/1229955189/
0002デフォルトの名無しさん
2009/05/14(木) 11:32:130003デフォルトの名無しさん
2009/05/14(木) 11:37:18DOSでプログラミング
http://pc11.2ch.net/test/read.cgi/tech/1047001533/
HTAをもっと流行らせる計画 Part2
http://pc11.2ch.net/test/read.cgi/tech/1220874815/
WSH(・∀・)スレッド! Part 3
http://pc11.2ch.net/test/read.cgi/tech/1208948450/
Windows板:お前ら、wsh使ってますか? Part7
http://pc11.2ch.net/test/read.cgi/win/1190548945/
Windows板:Windows PowerShell 2.0
http://pc11.2ch.net/test/read.cgi/win/1221046998/
Windows板:初心者〜管理者まで必読!コマンドライン(DOS Pt.7)
http://pc11.2ch.net/test/read.cgi/win/1217738171/
Windows板:MS-DOS・Win3.1総合スレッド2.01
http://pc11.2ch.net/test/read.cgi/win/1212957424/
OS板:DOS全般を語るスレ 2
http://pc11.2ch.net/test/read.cgi/os/1179114566/
OS板:■★▲DOSはまだ現役! Drive.B:
http://pc11.2ch.net/test/read.cgi/os/1046875141/
昔のPC板:MS-DOS総合スレッド 2
http://gimpo.2ch.net/test/read.cgi/i4004/1144778720/
0004デフォルトの名無しさん
2009/05/14(木) 13:03:220005デフォルトの名無しさん
2009/05/14(木) 13:04:160006デフォルトの名無しさん
2009/05/14(木) 13:05:050007デフォルトの名無しさん
2009/05/14(木) 14:19:43「コマンド.exe 1> テキスト.txt」 と "1" が入るのだが何故なんだぜ?
0008デフォルトの名無しさん
2009/05/14(木) 14:27:44標準出力が1で標準エラー出力が2
数字を省略すると1、つまり標準出力とみなされる
0009デフォルトの名無しさん
2009/05/14(木) 14:35:05どうもありがとう。
0010デフォルトの名無しさん
2009/05/17(日) 23:26:450011デフォルトの名無しさん
2009/05/18(月) 22:17:19STARTとENDという文字列があり、
STARTの方が、ファイルの先にあり、ENDが後にあると
判定するにはどうすれば良いでしょうか。
test.txt-----------------------------------
ランダムな文字列ランダムな文字列ランダムな文字列
ランダムな文字列ランダムな文字列 START
ランダムな文字列ランダムな文字列ランダムな文字列
ランダムな文字列ランダムな文字列ランダムな文字列
ランダムな文字列ランダムな文字列 END
ランダムな文字列ランダムな文字列ランダムな文字列
-------------------------------------------
0012デフォルトの名無しさん
2009/05/18(月) 23:36:27gawk "/START/{s=1}/END/{exit s}" textfile.txt
if errorlevel 1 echo OK
0013デフォルトの名無しさん
2009/05/21(木) 20:27:16set /p start=<temp
set /a start=%start:~1%
find /n "STOP" file >temp
set /p stop=<temp
set /a stop=%stop:~1%
if %start% lss %stop% echo だよ
0014デフォルトの名無しさん
2009/05/21(木) 20:30:03つかえないんだっけ?
0015デフォルトの名無しさん
2009/05/23(土) 15:31:270016デフォルトの名無しさん
2009/05/24(日) 01:27:240017デフォルトの名無しさん
2009/05/24(日) 02:43:500018デフォルトの名無しさん
2009/05/24(日) 18:30:11「XXX」が含まれる行以下4行をコメントアウトしたい場合、どのように組めばいいんだろう。
test.xml
<〜〜〜>(id="〜〜〜-XXX-〜〜")
<name>〜〜〜</name>
<file = "〜〜〜〜〜"/>
</〜〜〜>
を
<!--<〜〜〜>(id="〜〜〜-XXX-〜〜")
<name>〜〜〜</name>
<file = "〜〜〜〜〜"/>
</〜〜〜>-->
といった具合にコメントアウトしたい。
0019デフォルトの名無しさん
2009/05/24(日) 18:43:130020デフォルトの名無しさん
2009/05/24(日) 18:46:31わざわざバッチでやるやつがいるか?
0021デフォルトの名無しさん
2009/05/24(日) 19:05:03うぅむ。難しいんですかね。
文字コードはShift_JISのはずですが。
xmlを公開、配布していて、そのxmlをユーザー側でバージョンアップさせるために
バッチファイルを使って中身を書き換えられれば良いかと思ったのですが。。。
0022デフォルトの名無しさん
2009/05/24(日) 19:20:06人に配布するならまともな方法を選ぶべき
0023デフォルトの名無しさん
2009/05/24(日) 23:43:460024デフォルトの名無しさん
2009/06/01(月) 00:43:40ファイル名に使用できちゃうって事を誰も咎めないの?
0025デフォルトの名無しさん
2009/06/01(月) 00:48:11バックスラッシュだお
0026デフォルトの名無しさん
2009/06/01(月) 12:44:450027デフォルトの名無しさん
2009/06/01(月) 14:11:31>>26 PATH="c:\hoge;hoge";c:windows みたいに書けと言っとります
0028デフォルトの名無しさん
2009/06/02(火) 16:13:11HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\TimeZoneKeyName
のキーから読み込んだ値を任意の変数にセットしたいのですが
REG QUERYを使うまでは分かったものの、そこから先へ進めず手詰まりの状態です
0029デフォルトの名無しさん
2009/06/02(火) 16:54:170030デフォルトの名無しさん
2009/06/02(火) 17:05:520031デフォルトの名無しさん
2009/06/02(火) 19:14:25〔米〕 …の名をもらって; …のために (shout 〜 joy); (人)あての (This is 〜 you.);
…のための (books 〜 children); …(する)には; …の間 (〜 a long time); (一定の日時)に[の];
((意味上の主語を導く)) …が ((to do)); …の点で, …の割に (clever 〜 his age);
…を支持して (vote 〜 him); …として (choose him 〜 a leader); …を求めて (desire 〜 fame);
…に対して, …の分として (another plan 〜 tomorrow).
0032デフォルトの名無しさん
2009/06/07(日) 21:57:23ファイルにリダイレクトしてから、forで取り込むとか
0033デフォルトの名無しさん
2009/06/07(日) 23:55:15もう解決しました
batファイルだけでOKな方法で
0034デフォルトの名無しさん
2009/06/08(月) 12:03:460035デフォルトの名無しさん
2009/06/09(火) 06:38:450036デフォルトの名無しさん
2009/06/09(火) 13:41:180037デフォルトの名無しさん
2009/06/13(土) 03:40:26------------
%1
del %1
------------
今は上記のように書いていて、あるファイルをD&Dでバッチファイルに送るとそれを実行し、すぐさま削除、となるようにしたいのですが、
1行目のファイルを実行したところで止まり、アプリケーションを手動で終了させないと次に進んでくれません。
(D&Dで実行させたいファイルはアプリケーションが起動中でも削除可能)
解決策があれば教えてください。よろしくお願いします。
0038デフォルトの名無しさん
2009/06/13(土) 03:49:51ただ、直後だと流石に削除が早すぎる気がする
何らかの方法で多少の待ち時間は入れた方が良くないか
003937
2009/06/13(土) 04:52:26早速のレスありがとうございます!
startコマンドを使用してみたところ、期待通り動作してくれるようになりました。
>ただ、直後だと流石に削除が早すぎる気がする
自分も多少心配だったのですが、何度か試しても今のところは問題なく処理できているようなので、
当面はこのままにしておいて、不具合が出るようなら待ち時間の追加をしたいと思います。
どうもありがとうございました!
0040デフォルトの名無しさん
2009/06/13(土) 22:07:03del %1 || ping localhost -n 2 && goto loop
とかやっとけばリトライできる
0041デフォルトの名無しさん
2009/06/14(日) 03:31:150042デフォルトの名無しさん
2009/06/16(火) 15:29:14echo ProductName = %Name%
pause
実際のProductNameはWindows Vista (TM) Ultimateなのだけど
NameにはWindowsまでしか入らない・・・
空白文字に対応するのはどうすれば?
0043デフォルトの名無しさん
2009/06/16(火) 15:34:300044デフォルトの名無しさん
2009/06/16(火) 16:30:25echo ProductName = %Name%
pause
0045(1/2)
2009/06/16(火) 20:09:17ですが質問をさせてもらいやす。
現在VNCのようなソフトでwindowsサーバにログイン後、
吐き出されたログにエラーが含まれてないかのチェックを行ってます。
************************************************************************
1. 日次バッチのログ
▽親バッチログフォルダ
├▽子フォルダ1
│ └ログ1
├▽子フォルダ2
│ └ログ2
…
└▽子フォルダ9
└ログ9
これら1〜9のログ全てから、「エラー」「Ora-***」の文字が含まれる行を出力したい。
************************************************************************
0046(2/2)
2009/06/16(火) 20:11:03************************************************************************
2.オラクルのログ
▽オラクルのログフォルダ
├ lgwrtログ 最終更新日:6/16
├ pmonログ 最終更新日:6/16
…
└ hogeログ 最終更新日:6/14
ログの種類は10種程度、ただし上記と異なり全てのログが毎日更新されるわけでなく、
月曜日はlgwrtとpmonのログが更新される…etc そして更新内容は上書きでなく追記である。
☆実際のログの中身の例
2008-05-01 HH:MM:SS 〜〜 OK
2008-05-01 HH:MM:SS 〜〜 Err
2008-05-02 HH:MM:SS 〜〜 OK
…
2008-06-15 HH:MM:SS 〜〜 Caution
2008-06-16 HH:MM:SS 〜〜 Caution
2008-06-16 HH:MM:SS 〜〜 OK ※タブ区切り
ここから当日追記された行のみ(更新も当日されているはず)で
「Err」「Caution」を含む行を出力したい。
************************************************************************
アウトプットの方法はバッチ起動したらコンソールに表示でも、既に絞り込まれて一つの
ファイルにまとめられたとかでも確認作業の効率化が図れればなんでもいいです。、
バッチ処理内容を変更できないので、あくまで生成されたログに対しての確認の効率化の方法をお願いします。
0047デフォルトの名無しさん
2009/06/16(火) 20:17:13Win板のWSHスレかコマンドスレ行ってみたら?
…まぁ、どうしてもバッチでやりたいと言うなら
このスレ的にも問題は無いから、ちょっと考えてさせて欲しいw
0048デフォルトの名無しさん
2009/06/16(火) 20:21:47やはりWSH向きですかね? 自分でどうにかしようと調べたときにはWSHという存在も知ったのですが…
bat以上に馴染みがなかったので少しはわかるbatでの方法を聞いてみようかと
個人的には確認作業の効率化が目的なので、その方法は何でもいいのですが、
せっかくこちらで聞いたので、しばらくこっちで回答を待ってみます。
よい方法がないとかあまりに非効率的そうなら改めてWSHスレで聞いてみます。
0049デフォルトの名無しさん
2009/06/17(水) 21:03:50じゃあだめなのかなfor /rで各階層を見に行って。
messengerサービスが動いていれば、その後net sendで監視用クライアントにメッセージ飛ばす。
0050デフォルトの名無しさん
2009/06/17(水) 22:42:500051デフォルトの名無しさん
2009/06/17(水) 22:43:360052デフォルトの名無しさん
2009/06/28(日) 16:25:24----hoge.bat
cd /D %~dp0
call hagemoge\called.bat
dir
----hagemoge\called.bat
cd /D %~dp0
dir
------
というようなバッチファイルがあり、hoge.batを実行した場合、
hagemoge\called.bat を読んだ後、ディレクトリが移動しっぱなしになり、
意図する動作と異なる結果となります。
意図する動作は、hoge.bat で .\ でdirが実行され、
hagemoge\called.bat で hagemoge\ でdirが実行されることを意図しています。
しかし、結果は、双方とも hagemoge\ でdirが実行 されます。
意図した動作にするには、
call hagemoge\called.bat
cd /D %~dp0
dir
のように、別ディレクトリのカレントディレクトリを内部で帰るバッチをcallした後は、
また元に戻すように書かないといけない、ということでしょうか?
自動的にcallから戻ったときのカレントディレクトリにもどすような手段はないものでしょうか?
0053デフォルトの名無しさん
2009/06/28(日) 16:26:10o のように、カレントディレクトリを内部で変える別ディレクトリのバッチをcallした後は、
0054デフォルトの名無しさん
2009/06/28(日) 17:02:110055デフォルトの名無しさん
2009/06/28(日) 18:37:10setlocal
cd /D %~dp0
dir
0056デフォルトの名無しさん
2009/06/28(日) 21:14:30popd
0057デフォルトの名無しさん
2009/06/28(日) 22:04:010058デフォルトの名無しさん
2009/06/28(日) 22:53:54for .. in do ren 文に関するとところで問題が起きました
hoge フォルダ内にあるjpgファイルの名前の長さを短くした後
連番ファイルにリネームするバッチファイルを作ろうと試みました。
for %%i in (c:\hoge/*.jpg) do (
ren %%i %%i:~0,4
................
といった流れでバッチファイルを作ったのですが
コマンドが間違っていると怒られました。
「ファイル名を短くする」といった作業だけでもうまくいけば
全ての作業がうまくいくと思うので皆様の英知をお貸しくださいませ
0059デフォルトの名無しさん
2009/06/29(月) 00:17:55なにこれ?こんなのないだろ?
0060デフォルトの名無しさん
2009/06/29(月) 00:22:400061デフォルトの名無しさん
2009/06/29(月) 00:27:08例えば
echo %date%
だったら
2009/06/29
って出力されるじゃないですか?
それを
echo %date:~0,4%
としたら
2009
と出力されるのを応用したんですよ。
0062デフォルトの名無しさん
2009/06/29(月) 00:43:570063デフォルトの名無しさん
2009/06/29(月) 00:45:01じゃあどうやったらバッチファイルで短くファイル名を変えることが出来ますか?
0064デフォルトの名無しさん
2009/06/29(月) 00:48:150065デフォルトの名無しさん
2009/06/29(月) 00:53:02わかんないだけだろw
0066デフォルトの名無しさん
2009/06/29(月) 07:59:47ファイル名を環境変数に入れれば、その環境変数を >>61 みたいにすることはできる。
>>58 みたいに for ループの中で使うのなら、遅延環境変数の設定が必要。
しかし、先頭 4 文字だけだと、同じ名前になることがあるのでは ?
0067デフォルトの名無しさん
2009/06/29(月) 09:33:18的確なアドバイスありがとうございます
確かに先頭4文字だけだと同じ名前になってしまいますね。
ここにさらに連番にするというものをつくって解決させたいと思います
この単一バッチファイルでかのうでしょうか?
0068デフォルトの名無しさん
2009/06/29(月) 09:54:56番号のみを環境変数で保持すればよいのではないだろうか。
for ループ内で set /a num += 1 などとして、連番で増やしていく。
必要なら「短いファイル名」と「連番」を連結して、新しいファイル名にすれば
いいと思うけれど、いっそのこと「連番」だけでもいいのでは ?
いずれにしても、ひとつのバッチファイル内で可能。
0069デフォルトの名無しさん
2009/06/29(月) 11:55:07どなたかご存知の方いませんか?
0070デフォルトの名無しさん
2009/06/29(月) 13:00:01なるほど、ありがとうございます
set /a num += 1
set num =%%i
ren %%i = %num%
でコマンドを走らせたのですがなかなかうまくいきません。
どこがおかしいのでしょうか?
0071デフォルトの名無しさん
2009/06/29(月) 13:41:180072デフォルトの名無しさん
2009/06/29(月) 14:03:59わかならい人は黙っててください^^;
0073デフォルトの名無しさん
2009/06/29(月) 14:06:48for %%i in (c:\hoge\*.jpg) do call :fuga %%i
exit /b
:fuga
set /a num+=1
ren %1 %num%.jpg
exit /b
0074デフォルトの名無しさん
2009/06/29(月) 14:14:22さきほどは失礼なことを言って申し訳ありませんでした
0075デフォルトの名無しさん
2009/06/29(月) 14:18:08あ、でもなんだかコマンドの構文が間違っていますってでました・・
0076デフォルトの名無しさん
2009/06/29(月) 14:42:08for %%i in ("%homedrive%%homepath%\hoge\*.jpg") do call :fuga %%i
exit /b
:fuga
set /a num+=1
ren %1 %num%.jpg
exit /b
上のバッチファイルだと %%i が %1 に正しく値が代入されてないみたいでした。
これは環境変数の問題なんですかね?
0077デフォルトの名無しさん
2009/06/29(月) 14:46:250078デフォルトの名無しさん
2009/06/29(月) 14:49:33あ?もういっぺん言ってみろや
ふざけんなマジで
0079デフォルトの名無しさん
2009/06/29(月) 14:58:40お前いい奴だな
ありがとう
いい夢見れるわ
0080デフォルトの名無しさん
2009/06/29(月) 19:08:5416bitのMS-DOSならエスケープシーケンスやBATKEYを使えば作れるかもしれない。
cmd.exeだけじゃむずかしいだろう。
0081デフォルトの名無しさん
2009/06/30(火) 21:37:540082デフォルトの名無しさん
2009/07/01(水) 00:20:30hoge.bat > log.txt
とすることで、コマンドプロンプトウィンドウの代わりにファイルへ出力できますが、
この任意のバッチ(hoge.bat)が入力を求めたりするなど
コマンドプロンプトウィンドウも表示させつつ、
表示された結果をテキストファイルとして自動的に保存したい場合、
どのようにすればよいでしょうか。
出力されたテキストを後からtypeするだけだと、
>入力を求めたりする
ときなど、当然ながら期待した動作になりません
0083デフォルトの名無しさん
2009/07/01(水) 02:38:330084デフォルトの名無しさん
2009/07/01(水) 02:44:110085デフォルトの名無しさん
2009/07/01(水) 20:43:55意味判らんがteeみたいのがほしいってこと?
0086デフォルトの名無しさん
2009/07/01(水) 23:02:170087デフォルトの名無しさん
2009/07/01(水) 23:32:56呼び出される側(実際にコンソールへ文字を出力しているバッチ)は
いじらない方法で実現したいのです
>>85-86
そんなかんじです。
0088デフォルトの名無しさん
2009/07/02(木) 00:37:270089デフォルトの名無しさん
2009/07/02(木) 01:01:55localhostにtelnetしてログを採取w
0090デフォルトの名無しさん
2009/07/02(木) 01:27:55コンソールログはなかなか上手い方法が見つからないです…
いったんパイプすると、出力色情報とか消えちゃうんですよね…
>>89
それはww
0091デフォルトの名無しさん
2009/07/02(木) 15:53:142009063020000701-プレミアム8<文化・芸術> “皇帝”たちの野望「始皇帝 中国を作った男」.ts
を送ってもbatが動かないです。
%1
%~d1
%~p1
%~n1
%~x1
%~s1
を試しても途中までのファイル名しか認識しません。
なぜですか?どうすれば認識するようになりますか?
0092デフォルトの名無しさん
2009/07/02(木) 22:05:21""でくくってコマンドラインに渡してる?
0093デフォルトの名無しさん
2009/07/02(木) 22:08:25その質問からは適切な答えは出てこないだろう
0094デフォルトの名無しさん
2009/07/03(金) 01:33:300095デフォルトの名無しさん
2009/07/03(金) 03:23:36""でくくれ
009653
2009/07/03(金) 07:09:25>>54
cmd.exe経由で呼び出すのはお手軽でいいですね
表示はどうなるんだろ?おなじコンソールでは出力されるのだろうか?
試してみないと…
>>55
setlocal しらんかった( ´д`)
バッチファイル内の環境変数の変更を一時的なものにできるんですね。
バッチファイル内で使うと、最後に到達した時に元の設定が復元される、ということみたいですね。ということは、endlocalは要らないのか。
setlocal,endlocal - コマンドプロンプトを使ってみよう! −バッチファイル−
http://ykr414.com/dos/dos05.html#09
setlocalとendlocal
http://www.confrage.com/dos/batch-grammar/setlocal_endlocal/setlocal_endlocal.html
>>56
pushd,popdでディレクトリ情報をスタックできるんですね。すっかり存在を忘れてた…
レスしてくれた人ありがとう!試してみます!
0097デフォルトの名無しさん
2009/07/03(金) 13:36:17つわりレス…?
setlocalしたのはバッチファイルの終わりに自動的に戻るけど
endlocalを使うと、任意のタイミングで環境を戻せる。
普通に、途中から元の環境で実行したい、というのにも使えるし
例えば、一部の環境変数だけは戻り先にも残したい…なんて時に
rem 環境変数Aは引き継ぎたい
(
endlocal
set A=%A%
)
とかやると、括弧内の%変数%は括弧内を実行する前に全て展開されるので
endlocal後に改めてAに同じ内容が入り、引き継げることになる
0098デフォルトの名無しさん
2009/07/04(土) 01:31:490099デフォルトの名無しさん
2009/07/04(土) 01:42:070100デフォルトの名無しさん
2009/07/04(土) 01:45:430101デフォルトの名無しさん
2009/07/04(土) 03:13:43■ このスレッドは過去ログ倉庫に格納されています