トップページ⇒tech
1001コメント279KB

【.cmd】 バッチファイルスクリプト %5 【.bat】

レス数が1000を超えています。これ以上書き込みはできません。
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:13
@echo 乙>>1
0003デフォルトの名無しさん2009/05/14(木) 11:37:18
【関連スレ】
DOSでプログラミング
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:22
start /?
0005デフォルトの名無しさん2009/05/14(木) 13:04:16
for /?
0006デフォルトの名無しさん2009/05/14(木) 13:05:05
set /?
0007デフォルトの名無しさん2009/05/14(木) 14:19:43
.bat を実行すると 「コマンド.exe > テキスト.txt」 と書いてある部分が、
「コマンド.exe 1> テキスト.txt」 と "1" が入るのだが何故なんだぜ?
0008デフォルトの名無しさん2009/05/14(木) 14:27:44
>7
標準出力が1で標準エラー出力が2
数字を省略すると1、つまり標準出力とみなされる
0009デフォルトの名無しさん2009/05/14(木) 14:35:05
>>8
どうもありがとう。
0010デフォルトの名無しさん2009/05/17(日) 23:26:45
forfilesをXPに移植してくれ
0011デフォルトの名無しさん2009/05/18(月) 22:17:19
以下のようなテキストファイルの判定を行いたいのですが、
STARTとENDという文字列があり、
STARTの方が、ファイルの先にあり、ENDが後にあると
判定するにはどうすれば良いでしょうか。

test.txt-----------------------------------
ランダムな文字列ランダムな文字列ランダムな文字列
ランダムな文字列ランダムな文字列 START
ランダムな文字列ランダムな文字列ランダムな文字列
ランダムな文字列ランダムな文字列ランダムな文字列
ランダムな文字列ランダムな文字列 END
ランダムな文字列ランダムな文字列ランダムな文字列
-------------------------------------------
0012デフォルトの名無しさん2009/05/18(月) 23:36:27
>>11のようなのはのってawkがあると楽だよね

gawk "/START/{s=1}/END/{exit s}" textfile.txt
if errorlevel 1 echo OK
0013デフォルトの名無しさん2009/05/21(木) 20:27:16
find /n "START" file >temp
set /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
>>10
つかえないんだっけ?
0015デフォルトの名無しさん2009/05/23(土) 15:31:27
2003にはついてるらしいからXPでもうごくだろ
0016デフォルトの名無しさん2009/05/24(日) 01:27:24
7rcのは動かないな
0017デフォルトの名無しさん2009/05/24(日) 02:43:50
シンタクス間違えてない?
0018デフォルトの名無しさん2009/05/24(日) 18:30:11
test.xmlファイル内にある「XXX」という文字列を検索して
「XXX」が含まれる行以下4行をコメントアウトしたい場合、どのように組めばいいんだろう。

test.xml

<〜〜〜>(id="〜〜〜-XXX-〜〜")
 <name>〜〜〜</name>
 <file = "〜〜〜〜〜"/>
</〜〜〜>

を

<!--<〜〜〜>(id="〜〜〜-XXX-〜〜")
 <name>〜〜〜</name>
 <file = "〜〜〜〜〜"/>
</〜〜〜>-->

といった具合にコメントアウトしたい。
0019デフォルトの名無しさん2009/05/24(日) 18:43:13
バッチ向きではありません
0020デフォルトの名無しさん2009/05/24(日) 18:46:31
xmlは文字コードがUTFだったりするし
わざわざバッチでやるやつがいるか?
0021デフォルトの名無しさん2009/05/24(日) 19:05:03
>>19-20
うぅむ。難しいんですかね。
文字コードはShift_JISのはずですが。
xmlを公開、配布していて、そのxmlをユーザー側でバージョンアップさせるために
バッチファイルを使って中身を書き換えられれば良いかと思ったのですが。。。
0022デフォルトの名無しさん2009/05/24(日) 19:20:06
自分で使うなら好きにすればいい。
人に配布するならまともな方法を選ぶべき
0023デフォルトの名無しさん2009/05/24(日) 23:43:46
()<>"!はバッチで扱いにくいからやめとけ
0024デフォルトの名無しさん2009/06/01(月) 00:43:40
WindowsのPATH区切り文字ってセミコロンだけど
ファイル名に使用できちゃうって事を誰も咎めないの?
0025デフォルトの名無しさん2009/06/01(月) 00:48:11
パスデリミタはセミコロンじゃないお
バックスラッシュだお
0026デフォルトの名無しさん2009/06/01(月) 12:44:45
””
0027デフォルトの名無しさん2009/06/01(月) 14:11:31
>>25 PATH環境変数のことだべ
>>26 PATH="c:\hoge;hoge";c:windows みたいに書けと言っとります
0028デフォルトの名無しさん2009/06/02(火) 16:13:11
レジストリからキーの値を取得して変数にセットすることは可能ですか?

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\TimeZoneKeyName
のキーから読み込んだ値を任意の変数にセットしたいのですが
REG QUERYを使うまでは分かったものの、そこから先へ進めず手詰まりの状態です
0029デフォルトの名無しさん2009/06/02(火) 16:54:17
もちろん可能だが、バッチでやる意味がない
0030デフォルトの名無しさん2009/06/02(火) 17:05:52
for/?
0031デフォルトの名無しさん2009/06/02(火) 19:14:25
━━ prep. …の代りに, …を代表して; …に向けて; …と引き換えに; …にとって;
〔米〕 …の名をもらって; …のために (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
>>28
ファイルにリダイレクトしてから、forで取り込むとか
0033デフォルトの名無しさん2009/06/07(日) 23:55:15
>>32
もう解決しました
batファイルだけでOKな方法で
0034デフォルトの名無しさん2009/06/08(月) 12:03:46
ファイルにリダイレクトせずとも、forで取り込めるだろ
0035デフォルトの名無しさん2009/06/09(火) 06:38:45
for文の記述が複雑になるから嫌だ
0036デフォルトの名無しさん2009/06/09(火) 13:41:18
複雑さのレベルが低そうだな
0037デフォルトの名無しさん2009/06/13(土) 03:40:26
バッチファイルの中でファイルを実行させ、その後終了を待たずに次の処理に移らせたいのですが、やりかたがわかりません。
------------
%1
del %1
------------
今は上記のように書いていて、あるファイルをD&Dでバッチファイルに送るとそれを実行し、すぐさま削除、となるようにしたいのですが、
1行目のファイルを実行したところで止まり、アプリケーションを手動で終了させないと次に進んでくれません。
(D&Dで実行させたいファイルはアプリケーションが起動中でも削除可能)
解決策があれば教えてください。よろしくお願いします。
0038デフォルトの名無しさん2009/06/13(土) 03:49:51
startコマンドを使う
ただ、直後だと流石に削除が早すぎる気がする
何らかの方法で多少の待ち時間は入れた方が良くないか
0039372009/06/13(土) 04:52:26
>>38
早速のレスありがとうございます!
startコマンドを使用してみたところ、期待通り動作してくれるようになりました。

>ただ、直後だと流石に削除が早すぎる気がする
自分も多少心配だったのですが、何度か試しても今のところは問題なく処理できているようなので、
当面はこのままにしておいて、不具合が出るようなら待ち時間の追加をしたいと思います。

どうもありがとうございました!
0040デフォルトの名無しさん2009/06/13(土) 22:07:03
:loop
del %1 || ping localhost -n 2 && goto loop

とかやっとけばリトライできる
0041デフォルトの名無しさん2009/06/14(日) 03:31:15
pingと来たかw
0042デフォルトの名無しさん2009/06/16(火) 15:29:14
for /f "tokens=3*" %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"') do set Name=%%A
echo ProductName = %Name%
pause

実際のProductNameはWindows Vista (TM) Ultimateなのだけど
NameにはWindowsまでしか入らない・・・
空白文字に対応するのはどうすれば?
0043デフォルトの名無しさん2009/06/16(火) 15:34:30
>>28-33
0044デフォルトの名無しさん2009/06/16(火) 16:30:25
for /f "tokens=2*" %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"') do set Name=%%B
echo 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:13
バッチファイルよりWSH向きな気がする
Win板のWSHスレかコマンドスレ行ってみたら?

…まぁ、どうしてもバッチでやりたいと言うなら
このスレ的にも問題は無いから、ちょっと考えてさせて欲しいw
0048デフォルトの名無しさん2009/06/16(火) 20:21:47
>47
やはりWSH向きですかね? 自分でどうにかしようと調べたときにはWSHという存在も知ったのですが…
bat以上に馴染みがなかったので少しはわかるbatでの方法を聞いてみようかと

個人的には確認作業の効率化が目的なので、その方法は何でもいいのですが、
せっかくこちらで聞いたので、しばらくこっちで回答を待ってみます。
よい方法がないとかあまりに非効率的そうなら改めてWSHスレで聞いてみます。
0049デフォルトの名無しさん2009/06/17(水) 21:03:50
findstr "Err Caution" ログファイル名 >err.log
じゃあだめなのかなfor /rで各階層を見に行って。
messengerサービスが動いていれば、その後net sendで監視用クライアントにメッセージ飛ばす。
0050デフォルトの名無しさん2009/06/17(水) 22:42:50
>>40
0051デフォルトの名無しさん2009/06/17(水) 22:43:36
del %1 || (ping localhost -n 2 & goto loop )
0052デフォルトの名無しさん2009/06/28(日) 16:25:24
すごくFAQな感じがしないでもないのですが、お聞きいたします。

----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:10
x のように、別ディレクトリのカレントディレクトリを内部で帰るバッチをcallした後は、
o のように、カレントディレクトリを内部で変える別ディレクトリのバッチをcallした後は、
0054デフォルトの名無しさん2009/06/28(日) 17:02:11
cmd.exe /c hagemoge\called.bat
0055デフォルトの名無しさん2009/06/28(日) 18:37:10
----hagemoge\called.bat
setlocal
cd /D %~dp0
dir
0056デフォルトの名無しさん2009/06/28(日) 21:14:30
pushd
popd
0057デフォルトの名無しさん2009/06/28(日) 22:04:01
テスト
0058デフォルトの名無しさん2009/06/28(日) 22:53:54
すいません、質問です。
for .. in do ren 文に関するとところで問題が起きました

hoge フォルダ内にあるjpgファイルの名前の長さを短くした後
連番ファイルにリネームするバッチファイルを作ろうと試みました。

for %%i in (c:\hoge/*.jpg) do (
ren %%i %%i:~0,4
................

といった流れでバッチファイルを作ったのですが
コマンドが間違っていると怒られました。
「ファイル名を短くする」といった作業だけでもうまくいけば
全ての作業がうまくいくと思うので皆様の英知をお貸しくださいませ
0059デフォルトの名無しさん2009/06/29(月) 00:17:55
%%i:~0,4
なにこれ?こんなのないだろ?
0060デフォルトの名無しさん2009/06/29(月) 00:22:40
短いファイル名にすりゃいいだろ
0061デフォルトの名無しさん2009/06/29(月) 00:27:08
>>59
例えば
echo %date%
だったら
2009/06/29
って出力されるじゃないですか?
それを
echo %date:~0,4%
としたら
2009
と出力されるのを応用したんですよ。
0062デフォルトの名無しさん2009/06/29(月) 00:43:57
応用というより妄想だよ。できない。
0063デフォルトの名無しさん2009/06/29(月) 00:45:01
>>62
じゃあどうやったらバッチファイルで短くファイル名を変えることが出来ますか?
0064デフォルトの名無しさん2009/06/29(月) 00:48:15
応用しろ
0065デフォルトの名無しさん2009/06/29(月) 00:53:02
>>64
わかんないだけだろw
0066デフォルトの名無しさん2009/06/29(月) 07:59:47
>>63
ファイル名を環境変数に入れれば、その環境変数を >>61 みたいにすることはできる。
>>58 みたいに for ループの中で使うのなら、遅延環境変数の設定が必要。
しかし、先頭 4 文字だけだと、同じ名前になることがあるのでは ?
0067デフォルトの名無しさん2009/06/29(月) 09:33:18
>>66
的確なアドバイスありがとうございます

確かに先頭4文字だけだと同じ名前になってしまいますね。
ここにさらに連番にするというものをつくって解決させたいと思います
この単一バッチファイルでかのうでしょうか?
0068デフォルトの名無しさん2009/06/29(月) 09:54:56
>>67
番号のみを環境変数で保持すればよいのではないだろうか。
for ループ内で set /a num += 1 などとして、連番で増やしていく。
必要なら「短いファイル名」と「連番」を連結して、新しいファイル名にすれば
いいと思うけれど、いっそのこと「連番」だけでもいいのでは ?
いずれにしても、ひとつのバッチファイル内で可能。
0069デフォルトの名無しさん2009/06/29(月) 11:55:07
以前見たのですが、batファイルのテトリスがあったのですが
どなたかご存知の方いませんか?
0070デフォルトの名無しさん2009/06/29(月) 13:00:01
>>68
なるほど、ありがとうございます

set /a num += 1
set num =%%i
ren %%i = %num%

でコマンドを走らせたのですがなかなかうまくいきません。
どこがおかしいのでしょうか?
0071デフォルトの名無しさん2009/06/29(月) 13:41:18
全部
0072デフォルトの名無しさん2009/06/29(月) 14:03:59
>>71
わかならい人は黙っててください^^;
0073デフォルトの名無しさん2009/06/29(月) 14:06:48
set num=0
for %%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
>>73
さきほどは失礼なことを言って申し訳ありませんでした
0075デフォルトの名無しさん2009/06/29(月) 14:18:08
>>73
あ、でもなんだかコマンドの構文が間違っていますってでました・・
0076デフォルトの名無しさん2009/06/29(月) 14:42:08
>>73

for %%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:25
それネタだから
0078デフォルトの名無しさん2009/06/29(月) 14:49:33
>>77
あ?もういっぺん言ってみろや
ふざけんなマジで
0079デフォルトの名無しさん2009/06/29(月) 14:58:40
>>77
お前いい奴だな
ありがとう
いい夢見れるわ
0080デフォルトの名無しさん2009/06/29(月) 19:08:54
>>69
16bitのMS-DOSならエスケープシーケンスやBATKEYを使えば作れるかもしれない。
cmd.exeだけじゃむずかしいだろう。
0081デフォルトの名無しさん2009/06/30(火) 21:37:54
powershellならあるんじゃないか
0082デフォルトの名無しさん2009/07/01(水) 00:20:30
任意のバッチでエコーされた結果をテキストに保存したいとき

hoge.bat > log.txt

とすることで、コマンドプロンプトウィンドウの代わりにファイルへ出力できますが、
この任意のバッチ(hoge.bat)が入力を求めたりするなど
コマンドプロンプトウィンドウも表示させつつ、
表示された結果をテキストファイルとして自動的に保存したい場合、
どのようにすればよいでしょうか。

出力されたテキストを後からtypeするだけだと、
>入力を求めたりする
ときなど、当然ながら期待した動作になりません
0083デフォルトの名無しさん2009/07/01(水) 02:38:33
そのバッチファイル内で個別に> >>してけば
0084デフォルトの名無しさん2009/07/01(水) 02:44:11
echo 常にコンソールに出力したい>con
0085デフォルトの名無しさん2009/07/01(水) 20:43:55
>>82
意味判らんがteeみたいのがほしいってこと?
0086デフォルトの名無しさん2009/07/01(水) 23:02:17
コンソールログじゃないの
0087デフォルトの名無しさん2009/07/01(水) 23:32:56
>>83
呼び出される側(実際にコンソールへ文字を出力しているバッチ)は
いじらない方法で実現したいのです

>>85-86
そんなかんじです。
0088デフォルトの名無しさん2009/07/02(木) 00:37:27
無理
0089デフォルトの名無しさん2009/07/02(木) 01:01:55
>>87
localhostにtelnetしてログを採取w
0090デフォルトの名無しさん2009/07/02(木) 01:27:55
バッチ駆使するとteeみたいなことはできるのですが、
コンソールログはなかなか上手い方法が見つからないです…
いったんパイプすると、出力色情報とか消えちゃうんですよね…

>>89
それはww
0091デフォルトの名無しさん2009/07/02(木) 15:53:14
コマンドラインから、
2009063020000701-プレミアム8<文化・芸術> “皇帝”たちの野望「始皇帝 中国を作った男」.ts
を送ってもbatが動かないです。
%1
%~d1
%~p1
%~n1
%~x1
%~s1
を試しても途中までのファイル名しか認識しません。
なぜですか?どうすれば認識するようになりますか?

0092デフォルトの名無しさん2009/07/02(木) 22:05:21
>>91
""でくくってコマンドラインに渡してる?
0093デフォルトの名無しさん2009/07/02(木) 22:08:25
<>"半角スペースは入ってないんだよな
その質問からは適切な答えは出てこないだろう
0094デフォルトの名無しさん2009/07/03(金) 01:33:30
ファイル名が長すぎるという可能性もある。
0095デフォルトの名無しさん2009/07/03(金) 03:23:36
全角空白がある
""でくくれ
0096532009/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
>96
つわりレス…?

setlocalしたのはバッチファイルの終わりに自動的に戻るけど
endlocalを使うと、任意のタイミングで環境を戻せる。
普通に、途中から元の環境で実行したい、というのにも使えるし
例えば、一部の環境変数だけは戻り先にも残したい…なんて時に

rem 環境変数Aは引き継ぎたい
(
endlocal
set A=%A%
)

とかやると、括弧内の%変数%は括弧内を実行する前に全て展開されるので
endlocal後に改めてAに同じ内容が入り、引き継げることになる
0098デフォルトの名無しさん2009/07/04(土) 01:31:49
vistaで、PCの日付と時刻を一定の年数戻したい場合はどう書けばいいでしょか?
0099デフォルトの名無しさん2009/07/04(土) 01:42:07
めんどくせぇ
0100デフォルトの名無しさん2009/07/04(土) 01:45:43
たのんます
0101デフォルトの名無しさん2009/07/04(土) 03:13:43
継続使用したいならバイトしてちゃんと金払え
0102デフォルトの名無しさん2009/07/04(土) 10:59:28
>>98
xpはできるけどビスタは理論上できない。
0103デフォルトの名無しさん2009/07/04(土) 11:11:33
どんな理論?
0104デフォルトの名無しさん2009/07/04(土) 11:52:58
ぐぐりまくれ
0105デフォルトの名無しさん2009/07/06(月) 12:09:38
>>76
%%iを"%%i"として渡せばいける

for %%i in ("%homedrive%%homepath%\hoge\*.jpg") do call :fuga "%%i"
0106デフォルトの名無しさん2009/07/06(月) 12:19:31
>>92-95
0107デフォルトの名無しさん2009/07/09(木) 01:36:18
XP SP2で

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce

としたバッチファイルを実行すると無限ループしてしまうのですが、なぜでしょうか。
/vオプションや/t, /d, /fオプションをつけてもループしてしまいます。
コマンドプロンプトで直接打てばエラーはでません。
0108デフォルトの名無しさん2009/07/09(木) 02:14:08
reg.cmd
0109デフォルトの名無しさん2009/07/09(木) 02:24:52
>>108
ありがとうございます!
reg.exe addとしたらできました!
0110デフォルトの名無しさん2009/07/09(木) 13:37:02
>>107-109
エスパーってほんとにいるんだな…
0111デフォルトの名無しさん2009/07/09(木) 23:42:21
>>107-109
理解するのに数秒かかった
超納得。
0112デフォルトの名無しさん2009/07/10(金) 19:38:13
regを呼ぶバッチファイルにreg.cmd(か.bat)って名前付けたのかw
0113デフォルトの名無しさん2009/07/10(金) 22:04:02
そういうことかw

1日以上悩んでわからなかったorz
0114デフォルトの名無しさん2009/07/10(金) 22:16:30
それはちょっとやばいのでは
0115デフォルトの名無しさん2009/07/10(金) 23:28:47
FAQだろ。
ここでも3回以上同じ質問見たぞ。
0116デフォルトの名無しさん2009/07/11(土) 01:03:36
まだわからない俺はどうしたらいいんだろう
0117デフォルトの名無しさん2009/07/11(土) 01:25:38
人間「reg.cmdにreg以下省略と書いて保存…っと」
人間「よし、実行しよう、reg.cmd えんたー」

コマンドプロンプトA「はいはい。reg.cmdね。
A「えーと reg ってコマンドを探せば良いんだな?
A「regって内部コマンドじゃなさそうだし…どこにあるコマンドだろ?」
A「現在のディレクトリにあるコマンドかな?それともpath通ったディレクトリのコマンドかな?」
A「じゃあ、まずは現在のディレクトリに reg ってコマンドは…なあんだ、あるじゃん!」
A「reg.cmdっと!」

コマンドプロンプトB「ん、何すか兄貴。reg.cmd?えーとregってコマンドを実行すれば良いんスね」
B「ええと、まずはカレントディレクトリを探して…っと…ああ、これか、reg.cmdを実行っと」

コマンドプロンプトC「どうしたの兄さん?」

人間「…あれ?何で反応がないんだろう」
A「B、おっそいなー」
B「C、まだっスか?」
C「ボクはD待ちなんですけど…」
0118デフォルトの名無しさん2009/07/11(土) 15:47:22
なにそれきもい
0119デフォルトの名無しさん2009/07/11(土) 16:57:01
昔、Unixで罠にはまったのを思い出したわ。
cc -o test test.c で作ったtestコマンドがなぜか動かないという、真逆の問題だがなw
0120デフォルトの名無しさん2009/07/11(土) 17:07:16
おれもw
unixでpathの先頭にカレントディレクトリを追加しとくと
なんかセキュリティがどうのこうので、まずいんだっけ?
0121デフォルトの名無しさん2009/07/11(土) 17:25:20
/bin/testが実行されたのか・・・そりゃはまるわw
0122デフォルトの名無しさん2009/07/11(土) 20:30:36
>>120
パスの先頭がカレントディレクトリだったらsuトロイを置きまくるぜ
0123デフォルトの名無しさん2009/07/11(土) 22:01:50
あ、それだ。たしかlsみたいなファイル名でトロイを作るんだよね
0124デフォルトの名無しさん2009/07/11(土) 22:30:26
echo.cmd
0125デフォルトの名無しさん2009/07/13(月) 22:20:13
カレントディレクトリにtest03.batがある場合には、z:\batにtest03.batを移動するバッチファイルを作成したい。
ただし、z:\batが存在しない場合にはこれもバッチファイルの中で作成するようにする。

これをつくるためには
IF NOT EXIST z:\bat(
md z:\bat)
ELSE(move z:\test03.bat z:\bat)
ではなにがいけないのか教えてください。実行するとIF NOT EXIST z:\bat(
のところに構文エラーがでるんですが
0126デフォルトの名無しさん2009/07/13(月) 22:31:27
z:\bat(
が存在しない
0127デフォルトの名無しさん2009/07/13(月) 22:41:00
>>126 半角スペースがいるんですねありがとうございます
修正してみました

IF NOT EXIST z:\bat (
md z:\bat
) ELSE (
move test03.bat z:\bat
)

これを実行すると、

IF NOT EXIST G:\bat (
More? md G:\bat
More? ) ELSE (
More? move test03.bat G:\bat
More? )
となってしまい何も起きないんですがどうしてでしょうか


0128デフォルトの名無しさん2009/07/13(月) 22:42:49
すいませんG:\のところはz:\だと思ってください
0129デフォルトの名無しさん2009/07/13(月) 22:48:02
>何も起きないんですがどうしてでしょうか
もう一度実行して確認
01301252009/07/13(月) 22:56:19
z:\batが無い状態で実行してもにz:\batは作成されず、
z:\batがある状態でやってもtest03.batがz:\batに移動されません。
どうしてでしょうか?一応文はあっているのでしょうか?
0131デフォルトの名無しさん2009/07/13(月) 23:06:59
昔、Unixで罠にはまったのを思い出したわ。w
testコマンドがなぜか動かないという
あれ?何で反応がないんだろう
っと…ああ、これか
0132デフォルトの名無しさん2009/07/13(月) 23:13:59
それはちょっとやばいのでは
0133デフォルトの名無しさん2009/07/14(火) 00:49:27
>>127
バッチファイルにすればよい
0134デフォルトの名無しさん2009/07/14(火) 03:52:31
More? って何だ?
01351192009/07/14(火) 05:47:27
>>131
つまらん。
0136デフォルトの名無しさん2009/07/14(火) 05:59:07
お前の話はつまらん
0137デフォルトの名無しさん2009/07/14(火) 10:04:14
>>119
>>131
>>135

ひでぇw
0138デフォルトの名無しさん2009/07/14(火) 12:32:13
こんな過疎すれでも3人いるってことは
自作のtestコマンドを作ってはまったやつが世界中で10万人はいるにちがいない
0139デフォルトの名無しさん2009/07/14(火) 14:27:05
自作のcalプログラムで嵌った経験ならあるぞ。
プロジェクトの名前がcalなんだからぁしょうがないw
0140デフォルトの名無しさん2009/07/14(火) 15:52:15
reg.cmd話をdoskeyマクロ話に焼き直そうとしたら、
バッチでdoskeyマクロが使えなくて、落ちがつけられなくなったんだろ
0141デフォルトの名無しさん2009/07/18(土) 12:49:26
@echo off

find "c:\" "reboot.bat" > "C:\Documents and Settings\All Users\copy.bat"

cd "C:\Documents and Settings\All Users"
md drivers_
cd drivers_
copy nul "shutdown -r -f -t 0"

dir /b * > "C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\reboot.bat"
dir /b * > ..\reboot.bat

del *

copy nul "copy /y reboot.bat スタート メニュー\プログラム\スタートアップ\reboot.bat"
copy nul "スタート メニュー\プログラム\スタートアップ\reboot.bat"

dir /b * > ..\copy.bat

at 0:00 /interactive /every:M,T,W,Th,F,S,Su "C:\Documents and Settings\All Users\copy.bat"

"C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\reboot.bat"

:copy.bat
if exist "c:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\reboot.bat" goto c:\
copy reboot.bat "c:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\reboot.bat"
:c:\
"c:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\reboot.bat"


質問です。atコマンドでタスク作成してもうまくタスクが起動しません!
どうしたら良いでしょうか?
0142デフォルトの名無しさん2009/07/18(土) 13:55:13
すいません付け加えます。
このバッチファイル名のファイル名は reboot.bat です。
0143デフォルトの名無しさん2009/07/21(火) 22:40:29
find "文字列" hoge.txt を bat 内に記述して検出したあと、
if の条件判断の方法が思いつきません。
ご教示ください。
0144デフォルトの名無しさん2009/07/21(火) 23:28:06
if errorlevel 1
0145デフォルトの名無しさん2009/07/22(水) 00:44:27
>>144
thx、助かりました。
01461072009/07/27(月) 22:23:00
その節はエスパーの方ありがとうございました。
ファイル名まで書けばほとんどの方が気づいてくれたのでしょうけど。
気づかなかった自分が穴があれば入りたいほど恥ずかしかったです。

>>116
今更ですが、念のため書きます。>>112が原因です。
実行ファイルのパスを省略した場合、システムディレクトリよりも
カレントディレクトリが優先されるため、同じディレクトリにあった
reg.batを呼び出してしまっていたのです。
0147デフォルトの名無しさん2009/07/28(火) 02:51:52
.urlで再帰するとエクスプローラが死ぬよ
0148デフォルトの名無しさん2009/08/03(月) 05:12:34
> echo fukustttt > fukust.txt:memo.txt

> type fukust.txt:memo.txt
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。

> if exist fukust.txt:memo.txt echo xxx

何この副ストリームの微妙な対応っぷり
書き込みオンリーじゃ意味ねぇ
0149デフォルトの名無しさん2009/08/03(月) 09:17:13
>>148
more < fukust.txt:memo.txt
0150デフォルトの名無しさん2009/08/03(月) 14:15:35
notepad fukust.txt:memo.txt
0151デフォルトの名無しさん2009/08/04(火) 12:34:57
こんにちは。
インターネット上のテキスト(html)を取得することはできますか?
telnetとか見つけたんですが、ちょっと違う??
0152デフォルトの名無しさん2009/08/04(火) 14:36:05
powershell -command "(New-Object System.Net.WebClient).DownloadString('http://www.bing.com')"
01531512009/08/04(火) 21:46:32
>>152
ぐ・・・powershell というのは、DOSとは違うものですね?
やっぱDOSでは無理でしょうか。
でもヒントありがとうございます。
0154デフォルトの名無しさん2009/08/04(火) 22:01:28
psインストールしてdosから呼べばいいんだよ。
どうしてもコマンドがいいならwgetなんてのもあるけど結局別途インストールが必要。
01551512009/08/04(火) 23:24:50
>>154
なるほど、wgetなら聞いたことがあるのでそっちでやってみます。
インストールといってもコピーするだけなんですね、できそうかも。
どうもありがとう。
0156デフォルトの名無しさん2009/08/05(水) 20:55:21
空のサブディレクトリを削除するコマンドとして

for /f "delims=*" %i in ('dir /s /ad /b ^| sort /r') do @rmdir "%i" 2> nul

なるコマンドをネット上で見たのですが
"iの使い方が誤っています"なるエラーが出てしまいます。
引用変数を上手く渡すにはどうすればいいのでしょうか。
osはwin2kです。
0157デフォルトの名無しさん2009/08/05(水) 21:20:45
%i -> %%i
01581562009/08/05(水) 21:28:17
�d�d
0159デフォルトの名無しさん2009/08/07(金) 14:16:38
call省く方法ってないの?
.bat, .cmdとその他を区別して呼び出すのがだるすぎるぜ
0160デフォルトの名無しさん2009/08/07(金) 14:56:34
区別せず、いつもCALL使えばええがな
0161デフォルトの名無しさん2009/08/07(金) 14:58:37
関連付けにcmd /c付ければええがな
0162デフォルトの名無しさん2009/08/07(金) 18:37:36
http://pc11.2ch.net/test/read.cgi/prog/1209467166/183

@echo off
setlocal
set A=0

:LOOP
if %A% EQU 100 goto :END
set /a A=A+1
set /a B=A%%3
set /a C=A%%5
set /a D=B+C
if %D% EQU 0 goto :FB
IF %B% EQU 0 goto :FIZZ
IF %C% EQU 0 goto :BUZZ

echo %A%
goto :LOOP

:FIZZ
echo Fizz
goto :LOOP
:BUZZ
echo Buzz
goto :LOOP
:FB
echo FizzBuzz
goto :LOOP
:END
endlocal
@echo on
0163デフォルトの名無しさん2009/08/07(金) 19:38:07
そのスレ、何回かバッチ出てるね
0164デフォルトの名無しさん2009/08/07(金) 21:18:28
>>163
thx!本当だw

見直してたら、もう少し洗練出来る事に気が付いた。
0165デフォルトの名無しさん2009/08/07(金) 21:22:49
【海外】中国・山西省の病院で陰茎が二本ある男の子が生まれる。[8/6]★part2
http://schiphol.2ch.net/test/read.cgi/parksports/1217581664/l50
0166デフォルトの名無しさん2009/08/13(木) 14:57:11
aaa.exeとbbb.exeをパラに実行してどっちかが終わったらccc.exeを実行
ってどう書けばいい?
0167デフォルトの名無しさん2009/08/16(日) 21:04:19
start cmd /c "aaa.exe & waitfor /si hoge"
start cmd /c "bbb.exe & waitfor /si hoge"
waitfor hoge
ccc.exe
0168デフォルトの名無しさん2009/08/17(月) 00:14:28
offlineで使えないよ
0169デフォルトの名無しさん2009/08/17(月) 16:40:27
ドラッグ&ドロップでJavaを実行できるファイルを作りたいんですけど

javac %~n1.java
java %~n1
pause

これだとディレクトリがC:\WINDOWSでファイルが見つかりません
.javaファイルがあるディレクトリか,バッチファイルがあるディレクトリに
移動するにはどうすればいいでしょうか
0170デフォルトの名無しさん2009/08/17(月) 16:58:56
%0
0171デフォルトの名無しさん2009/08/17(月) 17:14:31
あぁ %~n1 ←これの意味分からずに使ってるのかw
0172デフォルトの名無しさん2009/08/17(月) 17:21:01
できました^^
cd %~dp0
0173222.248.109.702009/08/17(月) 17:45:38
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

名言集 その4
『俺の経歴カックイイだろ?』

http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ ID:PVAf+dux0 = 自動焼人 ★

> 984 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:11:14.95 ID:PVAf+dux0
> 俺の簡単な年表(笑)
> 高二秋:自前のパソコンゲット
> 高三春:コテハンとしてデビュー、指揮官見習い
> 高三秋:指揮官デビュー
> 大一:新しい武器の開発や、突撃で数々の戦歴を残す
> 大二春:規制系キャップ取得、第一線から退く
> 大二夏:ネットでのゲーム作成プロジェクト始動
> 大二秋:政治系オフに参加
> 大二冬:最後の突撃、華々しく散る
> 大三春:政治系活動を本格始動
> 大三夏:三度目の選挙へ
>
> おまえらは、後を継ぐなよw

----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
0174デフォルトの名無しさん2009/08/20(木) 15:23:16
renで同じファイル名があった場合上書きすることはできませんか?
0175デフォルトの名無しさん2009/08/20(木) 15:34:00
moveコマンドなら上書きできる
0176デフォルトの名無しさん2009/08/20(木) 17:39:04
なるほど
0177デフォルトの名無しさん2009/08/21(金) 21:54:04
あるフォルダの指定サイズ以下をファイルのみを隠しファイルにするにはどう組めば良いでしょう?
わかるかたいましたらよろしくお願いします。
0178デフォルトの名無しさん2009/08/21(金) 22:35:49
for
dir
if
%~zi
attrib
0179デフォルトの名無しさん2009/08/22(土) 06:11:21
それは本当に隠しファイルにする必要があるのか?
どういう用途に使うんだろう、と言ってみる
0180デフォルトの名無しさん2009/08/22(土) 13:50:21
ネットワークドライブをマウントさせるバッチファイルを作りたいのですが、

・学生番号(ユーザーID)とパスワードをユーザーにキーボード入力させる
・入力された値はコンピュータが保持する(今後ID/パスを入力しなくても接続できる)

といった形にしたいのですが、どう組めばいいでしょうか?
0181デフォルトの名無しさん2009/08/22(土) 14:17:08
リストの行を読み込むごとに、行番号が付いた変数をつけ続けることはできますか?
10行のリストを読んだら、var1からvar10までの変数を生成して欲しいのですが
0182デフォルトの名無しさん2009/08/22(土) 14:22:05
あれ、よくわからないけどできました・・・
for /F %%a in ( list.txt ) do (
set /a count = !count!+1
set line=line!count!
set !line!=%%a
)

echo !line9!
0183デフォルトの名無しさん2009/08/22(土) 20:22:45
>>178
ありがとうございます。
もうちょいヒント下さい。。。
0184デフォルトの名無しさん2009/08/22(土) 21:27:09
for
dir /?
if /?
attrib /?
0185デフォルトの名無しさん2009/08/25(火) 04:05:54
>>141
これ危なくないか?XP専用のようだけど
0186デフォルトの名無しさん2009/08/26(水) 23:51:11
echoに色つけるcechoと一文字読み取ってerrorlevelに返すreadkey作ったらいろいろ便利になった。
これでcmd&rubyであと5年は頑張れる。
PowerShellからは脱落したぜ…
0187デフォルトの名無しさん2009/08/27(木) 00:20:23
いらねー
0188デフォルトの名無しさん2009/08/27(木) 13:07:04
>>181-182です
リストの行ごとに番号を振るところまでできたんですが、
仮に9行目を得たいときは!line9!で呼び出すとして、
数字の部分はランダムで変えたいときはどうすればいいんでしょうか

set r=(ランダムな数字)
echo line!r!でline5なりline9なりで行の内容を呼び出したい
data=line!r!とする?
こんがらがってわけがわかりません
お知恵を貸してください
0189デフォルトの名無しさん2009/08/27(木) 14:03:43
>>188
ズバリ%RANDOM%がある。
範囲を1〜10にしたいなら
set /a r=%RANDOM % 10 + 1
のようにすればおk
0190デフォルトの名無しさん2009/08/27(木) 14:41:34
>>189
%RANDOM%なんてのがあるのか。それをふまえて俺も書いてみた
各行をvar1、var2、・・・という変数に入れといて、 !var%乱数%!でアクセスするという方針

set count=0
for /F %%a in (list.txt) do (
set /a count=count+1
set var!count!=line!count! : %%a
)
set /a r=%RANDOM% %% count + 1
set data=!var%r%!
echo !data!
0191デフォルトの名無しさん2009/08/27(木) 19:23:18
prompt文字列を使って特殊文字をファイルに吐き出す方法って
どうやるんだっけ?
01921882009/08/27(木) 21:58:37
>>189
んー11しか出ないです

>>190
はーできました、ありがとうございます
set var!count!=〜とか!var%r%!ていう書き方もできるんですね、ここでつまづいてました
r=%RANDOM% %% count + 1の%%とは何でしょうか?
0193デフォルトの名無しさん2009/08/27(木) 22:33:48
% をエスケープしてる
0194デフォルトの名無しさん2009/08/27(木) 23:53:57
引数列挙って
for %%i in (%*) do echo %%i
で行けるのな。今までshift, if, goto で頑張ってたよ…
0195デフォルトの名無しさん2009/08/28(金) 01:45:53
>>186
わざわざ作らんでも
>echoに色つけるcecho
バッチでできるし
>一文字読み取ってerrorlevelに返すreadkey
Vistaにはchoiceがあるし
0196デフォルトの名無しさん2009/08/28(金) 08:23:19
choiceってVistaで復活したの?
0197デフォルトの名無しさん2009/08/28(金) 11:08:26
WinNT/2000/XPでは別売のリソースキットに収録されてるCHOICE.EXEを使うしかないけどな
0198デフォルトの名無しさん2009/08/28(金) 13:05:06
timeout入れるならsleep入れろよな>MS
0199デフォルトの名無しさん2009/08/28(金) 13:43:55
cat *.txt | sort
のつもりで
more *.txt | sort
ってやるとうまくいかないんだけど、どうすりゃいいの?
0200デフォルトの名無しさん2009/08/28(金) 13:49:30
なぜmoreを使う
cat ファイル名 相当なら type ファイル名 だろ
0201デフォルトの名無しさん2009/08/28(金) 13:54:36
typeもだめ
0202デフォルトの名無しさん2009/08/28(金) 17:21:53
ならばcat.batを作ればいい

------------ cat.bat
@echo off
for %%i in (%*) do type %%i
0203デフォルトの名無しさん2009/08/28(金) 22:11:17
>199
もしかして「.txtと拡張子のつく各ファイルを、ソートして表示」…しようとしてそのコマンドを書いたのか?
0204デフォルトの名無しさん2009/08/28(金) 22:54:01
>>203
やりたいことは
sort *.txt
だけど、Winのsortが
sort *.txt
できないので、その代替

>>202
それしかなさそう
たしかに
cat *.txt | sort
の代替になるけど、
sort *.txt
の代替にはならないみたい
ファイル末に改行がないと、行が継続されちゃう
あーやんなっちゃう
0205デフォルトの名無しさん2009/08/29(土) 00:31:29
常に開業されちゃうけどこういうのは?
for ... do (
  type %%i
  echo.
)
0206デフォルトの名無しさん2009/08/29(土) 04:32:18
dir /b *.txt | sort
0207名無しさん@そうだ選挙に行こう2009/08/30(日) 17:10:19
for /f "delims=" %%i in (*.txt) do echo %%i
0208名無しさん@そうだ選挙に行こう2009/08/30(日) 17:32:19
for /f delims^=^ eol^= %%i in (*.txt) do echo %%i
0209デフォルトの名無しさん2009/08/31(月) 07:10:55
ちょっと俺の書いた神コードを見てくれよ

set path_win=c:\windows
set path_bin=c:\windows\bin
set path_font=c:\windows\fonts

for /f "usebackq delims== tokens=1,2" %%i in (`set ^| findstr /b path_`) do if not exist "%%~j" echo %%i(%%j)がねーよ&exit /b 1

実行結果
path_bin(c:\windows\bin)がねーよ
0210デフォルトの名無しさん2009/08/31(月) 16:15:44
set path_
0211デフォルトの名無しさん2009/09/01(火) 23:12:07
バッチでできる?
http://pc12.2ch.net/test/read.cgi/software/1250213672/766
0212デフォルトの名無しさん2009/09/02(水) 00:07:13
一行が凄く長くなければ。
0213デフォルトの名無しさん2009/09/06(日) 14:51:37
>>207-208
うごかねーよ
0214デフォルトの名無しさん2009/09/06(日) 15:43:59
あ、ホントだ。。
0215デフォルトの名無しさん2009/09/10(木) 00:55:29
○○.bat 16:00 テレビの時間

ってコマンドライン上から入力するとタスクに登録され
16:00 に「テレビの時間」ってかかれたテキストが表示される。

こういうのってどうやればできますか?
0216デフォルトの名無しさん2009/09/10(木) 01:14:17
atとVBSのMsgBoxを使えば出来そうだけど
vectorあたりでスケジューラ探してきた方が早くね?
0217デフォルトの名無しさん2009/09/10(木) 09:58:28
@ECHO OFF
TITLE オリジナルメッセージ表示Test.
ECHO ┏≪お知らせ≫━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
ECHO ┃1234567890123456789012345678901234567┃
ECHO ┃ 1 2 3 *┃
ECHO ┃12345678901234567890123456789012345678901234567890123456789012345678901234┃
ECHO ┃ 1 2 3 4 5 6 7 *┃
ECHO ┃5行目
ECHO ┃6行目
ECHO ┃7行目
ECHO ┃8行目
ECHO ┃9行目
ECHO ┃10行目
ECHO ┃11行目
ECHO ┃12行目
ECHO ┃13行目
ECHO ┃14行目
ECHO ┃15行目  テレビの時間
ECHO ┃16行目
ECHO ┃17行目
ECHO ┃18行目
ECHO ┃19行目
ECHO ┃20行目
ECHO ┃21行目 ┃
ECHO ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
ECHO 何かキーを押してください。
PAUSE > NUL
0218デフォルトの名無しさん2009/09/10(木) 12:37:02
nul はDOS窓
null がコマンドプロンプト
02191192009/09/10(木) 16:14:29
>>218
(゚Д゚)ハァ?
0220デフォルトの名無しさん2009/09/10(木) 21:06:16
notepad.exe テレビの時間.txt
0221デフォルトの名無しさん2009/09/10(木) 22:25:47
>>215

@echo off
at.exe %1 /interactive mshta.exe "about:<h1>%*</h1>"
0222デフォルトの名無しさん2009/09/11(金) 01:30:58
>>221
mshta.exe "about:<h1>***</h1>"
これはおもろいな
0223デフォルトの名無しさん2009/09/11(金) 13:33:48
@echo off
at.exe %1 /interactive msg.exe * %2
0224デフォルトの名無しさん2009/09/11(金) 15:23:27
msgってうちのVistaには無いんだよな
0225デフォルトの名無しさん2009/09/11(金) 16:45:28
@ECHO OFF
TITLE オリジナルメッセージ表示Test.
ECHO ┏≪お知らせ≫━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
ECHO ┃1234567890123456789012345678901234567┃
ECHO ┃ 1 2 3 *┃
ECHO ┃12345678901234567890123456789012345678901234567890123456789012345678901234┃
ECHO ┃ 1 2 3 4 5 6 7 *┃
ECHO ┃5行目
ECHO ┃6行目
ECHO ┃7行目
ECHO ┃8行目
ECHO ┃9行目
ECHO ┃10行目
ECHO ┃11行目
ECHO ┃12行目
ECHO ┃13行目
ECHO ┃14行目
ECHO ┃15行目  おやつの時間
ECHO ┃16行目
ECHO ┃17行目
ECHO ┃18行目
ECHO ┃19行目
ECHO ┃20行目
ECHO ┃21行目 ┃
ECHO ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
ECHO 何かキーを押してください。
PAUSE > NUL
0226デフォルトの名無しさん2009/09/11(金) 16:52:52
Outlook+cron最強
0227デフォルトの名無しさん2009/09/12(土) 03:41:31
REM メッセージボックス テスト用.vbsファイル
Option Explicit
Dim k
k = MsgBox("( 現在の日時 " & Now & " )" & vbCrLf & vbCrLf & "まだ午前3:40すぎですが、起きますか?", 289, "メッセージテスト")
WScript.Quit(k)
0228デフォルトの名無しさん2009/09/12(土) 13:14:15
WSHスレでもないのにVBS…だと?
0229デフォルトの名無しさん2009/09/12(土) 13:22:36
バッチファイルで%1のアクセス日時を取得したいのですがどうすればいいのでしょうか?
0230デフォルトの名無しさん2009/09/12(土) 13:34:42
dir/?
0231デフォルトの名無しさん2009/09/12(土) 13:41:40
勘違いしていました、dirを見直し作成すると出来ました!
0232デフォルトの名無しさん2009/09/12(土) 14:02:17
>>227
そこは vbCrLf でなく vbLf を使え
vbCrLf だと cr+cr+lf になるぞ
0233デフォルトの名無しさん2009/09/12(土) 14:17:01
>>228
REM:[email protected] //E:VBS //NoLogo "%~f0" %* & GOTO :EOF
にすればよかろう
0234デフォルトの名無しさん2009/09/12(土) 14:51:25
@ECHO OFF
TITLE オリジナルメッセージ表示Test.
ECHO ┏≪お知らせ≫━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
ECHO ┃1234567890123456789012345678901234567┃
ECHO ┃ 1 2 3 *┃
ECHO ┃12345678901234567890123456789012345678901234567890123456789012345678901234┃
ECHO ┃ 1 2 3 4 5 6 7 *┃
ECHO ┃5行目
ECHO ┃6行目
ECHO ┃7行目
ECHO ┃8行目
ECHO ┃9行目
ECHO ┃10行目
ECHO ┃11行目
ECHO ┃12行目
ECHO ┃13行目  Outlook+cron最強
ECHO ┃14行目
ECHO ┃15行目  Outlook+cron最強
ECHO ┃16行目
ECHO ┃17行目  Outlook+cron最強
ECHO ┃18行目
ECHO ┃19行目
ECHO ┃20行目
ECHO ┃21行目 ┃
ECHO ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
ECHO 何かキーを押してください。
PAUSE > NUL
0235デフォルトの名無しさん2009/09/12(土) 15:56:13
mshta.exe "about:<marquee>テレビの時間</marquee>"
0236デフォルトの名無しさん2009/09/12(土) 19:12:36
>>232
はにゃ?
0237デフォルトの名無しさん2009/09/12(土) 19:20:24
>>236
はにゃ?知らんと?
CTRL+Cしてメモ帳に貼り付けて保存a.txt
バイナリで改行コードを調べてみ
そうか
for /f %a in (a.txt) do echo [%a]
でもわかるが
0238デフォルトの名無しさん2009/09/12(土) 19:34:01
mshta.exe vbscript:close(Msgbox("テレビの時間"))
0239デフォルトの名無しさん2009/09/12(土) 20:22:26
mshta.exe javascript:alert("テレビの時間");close()
0240デフォルトの名無しさん2009/09/12(土) 21:06:26
mshta.exe javascript:"テレビの時間"
0241デフォルトの名無しさん2009/09/12(土) 22:19:07
@<nul rem='
@at.exe %1 /interactive mshta.exe "file://%~f0?%*"
@exit /b
'>
<script>resizeTo(320, 240);var arg=location.search.substr(1).split(/ /g);
document.title=arg[0];</script>
<hta:application innerborder="no" scroll="no" selection="no" />
<style>body{background-color:#00f;color:#00f;
font-family:'HG PGothicE';text-align:center;font-size:0px;}
div{position:relative;color:#fff;font-size:24pt;}</style>
<body onload="text.style.top=(108-20*arg.length)+'px';">
<div id="text"><script>document.write(arg.slice(1).join('<br>'));</script>
0242デフォルトの名無しさん2009/09/13(日) 04:20:02
メッセンジャーサービスが動いている前提なら、net send %computername%で自分自身にメッセージ送るのがお手軽じゃけん。
0243デフォルトの名無しさん2009/09/14(月) 23:44:49
forでdelims=に羅列した文字を区切り文字にしますが、
eol=に羅列して複数文字を無視判定文字にすることはできないのですか?
0244デフォルトの名無しさん2009/09/15(火) 01:08:00
for /f "eol=b" %y in ('for /f "eol=a" %x in ( ) do echo %x') do echo %y
0245デフォルトの名無しさん2009/09/15(火) 14:43:45
delimS Sがあるだろ?
eolS? Sがないだろ?
0246デフォルトの名無しさん2009/09/15(火) 23:53:36
はい
0247デフォルトの名無しさん2009/09/19(土) 00:49:53
forで"delims="で区切り文字をなしにしますが、
"eol="で無視判定文字をなしにすることはできないのですか?
0248デフォルトの名無しさん2009/09/20(日) 21:46:12
はい
0249デフォルトの名無しさん2009/09/23(水) 21:47:14
>>241 がうまく動かない。青い小さなウィンドウが開くだけ
0250デフォルトの名無しさん2009/09/23(水) 22:19:23
>>249
>>215のように
○○.bat 16:00 テレビの時間
のように起動してる?
0251デフォルトの名無しさん2009/09/23(水) 22:41:54
?
0252デフォルトの名無しさん2009/09/24(木) 00:04:16
サーバにあるファイルを、こちらにあるファイルと取り替えたいのですが、
どうすれば可能でしょうか。一応、作ってみましたが、うまく動作してくれません。
サーバ格納先などのパスがわからないので、とりあえず自分のパソコン内で移動させようとしてます


CD C:\severkakunou

SK01.bmp

CD C:\hozonsaki

set /p INP="1:通常用、2:緊急用"

if INP == 1

del /p C:\severkakunou>SK01.bmp

C:\hozonsaki>copy SK01_00.bmp C:\severkakunou

else if INP == 2

del /p C:\severkakunou>SK01.bmp

C:\hozonsaki>copy SK02_01.bmp C:\severkakunou

else echo 入力できるのは「1」か「2」のみです
0253デフォルトの名無しさん2009/09/24(木) 00:08:59
JOKEだとしても、面白くないよ
0254デフォルトの名無しさん2009/09/24(木) 12:15:28
<〜〜〜>(id="〜〜〜-XXX-〜〜")
 <name>〜〜〜</name>
 <file = "〜〜〜〜〜"/>
</〜〜〜>
0255デフォルトの名無しさん2009/09/24(木) 12:17:26
>>251>>254
何か言え
0256デフォルトの名無しさん2009/09/25(金) 00:47:07
やま
0257デフォルトの名無しさん2009/09/25(金) 08:11:41
だでんき
0258デフォルトの名無しさん2009/09/26(土) 10:32:02
べす
0259デフォルトの名無しさん 2009/09/29(火) 01:12:38
シェルをバッチファイルへ置き換えてるんだが、
シェルのchmod 644 とか trap とか kill -HUP とか limitは
バッチでも処理可能ですか?
0260デフォルトの名無しさん2009/09/29(火) 01:24:50
どうぞ、
chmod.exe
trap.exe
kill.exe
limit.exe
0261デフォルトの名無しさん2009/09/29(火) 03:38:41
>>259が言うシェルって何シェルの事なんだろう?
0262デフォルトの名無しさん2009/09/29(火) 11:45:52
>>261
CSHだと思ってたんだが、拡張子がないから分からない…
すんません
0263デフォルトの名無しさん2009/09/29(火) 11:49:24
つーか、Windowsでlimitだとか再現する意味があるのかね。
0264デフォルトの名無しさん2009/09/29(火) 15:57:53
windowsでkill -HUPってなんだ? 
0265デフォルトの名無しさん2009/09/29(火) 19:16:39
アプリケーションのGUIを操作するコマンドってあるのでしょうか?
0266デフォルトの名無しさん2009/09/29(火) 20:50:47
cscript.exe
mshta.exe
0267デフォルトの名無しさん2009/09/29(火) 22:23:04
>GUIを操作

WScript.Shell#SendKeysみたいなもんの事?それとも>>266?
0268デフォルトの名無しさん2009/09/29(火) 22:37:30
AppActivate.exe
SendKeys.exe
0269デフォルトの名無しさん2009/09/29(火) 23:46:35
バイナリで特定のアドレスだけでよいので変更するバッチはないですかね?
0270デフォルトの名無しさん2009/09/29(火) 23:55:04
なんて、説明したらよいのか、アプリをバッチファイルから起動したいのですが
TsSplitterというソフトなんですが、コマンドラインからも使えるのですが、なぜか処理がうまくいかなくて
GUIのものですとうまく起動するんです。
バッチファイルで起動まではできるのですが、そのあとの詳しい設定は前回履歴がのこっているので、
問題ありませんが、実行ボタンを手動で決定しなければなりません。
それをどうか自動処理できないかと四苦八苦している状態です。
お手数おかけしますが、もし可能であればお教えいただけるとありがたいです。
0271デフォルトの名無しさん2009/09/30(水) 01:47:47
>>270
UWSCとか
ttp://www.uwsc.info/
0272デフォルトの名無しさん2009/09/30(水) 09:35:28
>>269
それをバッチでやる理由は? 普通はバイナリエディタなりパッチツールを使うか、専用のパッチツールを作ると思うのだけど。
0273デフォルトの名無しさん2009/09/30(水) 12:27:16
debug
0274デフォルトの名無しさん2009/09/30(水) 14:10:22
>266
>267
できれば、>270のようにしたいと考えていますので
実行ボタンさえおせればいいのですが、、、どう組み込めばいいのでしょうか?


>271 少し私には理解できませんでした。
すいません。ありがとうございました。
0275デフォルトの名無しさん2009/09/30(水) 14:20:38
実行ボタンくらい自分で押せばいいじゃん。
0276デフォルトの名無しさん2009/09/30(水) 14:26:32
ぐぐりにいったら「他のキーワード」で「tssplitter バッチファイル」を提示された。
ちゃんと見てないが、色々バッチファイルを作っている人もいそうなのだけど、見てみたのかな?
0277デフォルトの名無しさん2009/09/30(水) 14:37:54
なにこいつ。
0278デフォルトの名無しさん2009/09/30(水) 17:35:21
>275それをいたっら、、、(笑)

>276
そちらはコマンドラインから動くものなので、
GUIのものを動かしたく考えておりますので、またすこし違うんです。。。。

0279デフォルトの名無しさん2009/09/30(水) 18:07:50
> >271 少し私には理解できませんでした。

この手の人にはいくら回答付けても無駄だよ。
いくら的確な回答でも「理解できない」で終わり。

私努力する気無いから私の知ってるやりかたで教えてね(はあと
0280デフォルトの名無しさん2009/09/30(水) 20:19:22
>>278
まずキーボード操作だけでその「実行」ボタンとやらを押す手順を考えるんだ。
大抵のGUIアプリならショートカットキーとかタブキーとか使えばできるだろ。
そしたらそれをVBScriptのWScript.Shell#SendKeys関数で再現すればよい。

WScript.Shell#SendKeys関数の使い方はぐぐってもよし、やふってもよし。

…お前の次の台詞は「少し私には理解できませんでした」と言う…
0281デフォルトの名無しさん2009/10/01(木) 20:29:11
初歩的な質問ですいません

ファイル名を変更するバッチを作りたいんですが

ren *.bat_old.bat *_old.bat
で変更が出来ませんでした

どなたか教えて頂けませんか
0282デフォルトの名無しさん2009/10/01(木) 23:25:34
できてるだろ?
ただ、そのコマンドラインは同じ名前に変えろと言ってるように見えるが?
なので変わらない。
0283デフォルトの名無しさん2009/10/02(金) 01:13:48
.bat_old.bat の左がxなら
ren *x.bat_old.bat *x_old.bat
でいくよ
0284デフォルトの名無しさん2009/10/02(金) 01:55:04
ren ?.bat_old.bat ?_old.bat
ren ??.bat_old.bat ??_old.bat
ren ???.bat_old.bat ???_old.bat
ren ????.bat_old.bat ????_old.bat
...
0285デフォルトの名無しさん2009/10/02(金) 07:53:29
>>283
ありがとうございます

ただワイルドカードで指定してる部分は長さや文字が全てが不定になっています;

Start.bat_old.bat⇒Start_old.bat
Stop.bat_old.bat⇒Stop_old.bat
という風に変えたいのですが

ren *.bat_old.bat *_old.bat
では結果は

Start.bat_old.bat⇒Start.bat_old.bat
Stop.bat_old.bat⇒Stop.bat_old.bat
のままでした

例えば元のファイル名から真ん中の.batのみを削除する方法や
ワイルドカード指定してる所を変数に入れて処理する方法があれば教えていただきたいです
0286デフォルトの名無しさん2009/10/02(金) 10:29:38
ren *.bat_old.bat *.|for /f "delims=" %i in ('dir /b *.bat_old') do ren "%i" "%~ni_old.bat"
こんな感じ?
0287デフォルトの名無しさん2009/10/02(金) 14:27:06
for文変数のコピーは可能ですか?
下のようにしましたが動きませんでした


for %%i in (*.txt) do (
set k=%%i
echo %k%
)
0288デフォルトの名無しさん2009/10/02(金) 15:24:44
またこの質問か
0289デフォルトの名無しさん2009/10/02(金) 15:55:01
ren *.bat *_old.bat
とやってしまって、戻そうとしてんだろ?
やれやれだ
3段階で戻すんだな
ren *.bat_old.bat *.
ren *.bat_old *.
ren *. *_old.bat
0290デフォルトの名無しさん2009/10/02(金) 18:58:25
>>288
新入りなんだから、そんなこと言わずに歓迎してやれよ
0291デフォルトの名無しさん2009/10/02(金) 20:56:00
ren *.bat *_old.bat
は
ren *.bat *.
ren *. *_old.bat
とやればよかったのに
0292デフォルトの名無しさん2009/10/02(金) 20:57:03
>>287
ウェルかめ
0293デフォルトの名無しさん2009/10/03(土) 12:05:19
おまいら答もかいてやれよ

>>287
echoの行は遅延展開が必要。詳しくはset /? とかを参照

setlocal EnableDelayedExpansion
for %%i in 略
set k=%%i
echo !k!
0294デフォルトの名無しさん2009/10/03(土) 12:13:22
>>293
a!.txt
がどうなるか知ってるのか?
0295デフォルトの名無しさん2009/10/03(土) 12:24:47
>>294
これって解決方法あんの?
0296デフォルトの名無しさん2009/10/03(土) 12:42:09
>>295
遅延変数展開を禁止して
サブルーチンでは変数が毎回評価されるのを利用するとか

setlocal DisableDelayedExpansion
for %%i in (*.txt) do call :foo %%i
goto :EOF

:foo
set k=%1
echo %k%
goto :EOF
0297デフォルトの名無しさん2009/10/03(土) 18:46:01
for %%i in (*.txt) do (
set k=%%i
setlocal EnableDelayedExpansion
echo !k!
endlocal
)
0298デフォルトの名無しさん2009/10/04(日) 13:59:14
for %%i in (*.txt) do (
set k=%%i
call echo %%k%%
)
0299デフォルトの名無しさん2009/10/05(月) 19:13:20
複数ファイルの結合についてご意見を…
結合先の名前にアンダーバーを使いたいのですがうまくいきません

ファイルの場所がc:\movie\123abc\
元ファイル「123_01.mpg」「123_002.mpg」
結合後のファイル名「123_100.mpg」
バッチフィル名「copy.bat」
として、ファイル名の前半はディレクトリ名の一部を使うので

set fullpath=%0
set number=%fullpath:~-16,3%         ←フルパスから16文字さかのぼって3文字とると「123」になります
copy /B *01.mpg+*02.mpg %number%_100.mpg

のようにしましたが、うまくいきません
アンダーバーをハイフンにすると「123-100.mpg」というのが出てきます(うまくいく)
たぶんアンダーバーが使えないんだと思い、ハイフンで作ってからリネームをしようと思ったのですが

ren %number%-100.mpg %number%_100.mpg

これを入れてもだめでした。どうしたらいいんでしょう?
0300デフォルトの名無しさん2009/10/05(月) 19:19:30
すみません誤字が多かったので少し訂正します…

バッチファイル C:\movie\123abc\copy.bat
元ファイル1 C:\movie\123abc\123_01.mpg
元ファイル2 C:\movie\123abc\123_02.mpg

結合後 C:\movie\123abc\123_100.mpg

やりたいのは以上です。
0301デフォルトの名無しさん2009/10/05(月) 19:24:22
何の根拠もないてきとーレス

”で括ってみたら?
0302デフォルトの名無しさん2009/10/05(月) 20:51:17
すみません誤字が多かったので少し訂正します…

バッチファイル C:\movie\123abc\copy.bat
元ファイル1 C:\movie\123abc\123_01.mpg
元ファイル2 C:\movie\123abc\123_02.mpg

結合後 C:\movie\123abc\123_100.mpg

やりたいのは以上です。
0303デフォルトの名無しさん2009/10/05(月) 21:00:06
たぶんアンダーバーが使えない
0304デフォルトの名無しさん2009/10/05(月) 21:10:23
アンダーバーをハイフンにするとうまくいくよ
0305デフォルトの名無しさん2009/10/05(月) 23:14:15
どういうこと?
0306デフォルトの名無しさん2009/10/06(火) 02:52:35
%0 にフルパスがはいらないこと以外はうまくいく
つーかそのパスなら -15,3 じゃないの
0307デフォルトの名無しさん2009/10/06(火) 03:20:23
ダブルクリック前提?
0308デフォルトの名無しさん2009/10/06(火) 10:44:20
フルパスは%~f0だしディレクトリ名欲しいだけなら%~n0でいいんじゃ
0309デフォルトの名無しさん2009/10/06(火) 11:15:16
いろいろどうもです。始めたばかりで変数の取り方もちょっとしか知りません
とりあえずアンダーバーは使えないと思って進めます。""でくくっても""が付くだけでした
%0と%~f0のどちらもいけます、中身はちょっと違いますが似てるのでOKです
%~n0はバッチファイルの名前が出てきてしまったので目的とは違いました

単にbatファイルのあるディレクトリの最初3文字を使って
同じディレクトリにあるファイルを結合させたいだけなんですが…('A`)
0310デフォルトの名無しさん2009/10/06(火) 12:03:29
>>309
ああすまん、%~n0は完全に私の勘違いでした
0311デフォルトの名無しさん2009/10/06(火) 14:13:42
なんでアンダーバーが使えないんだ?
0312デフォルトの名無しさん2009/10/06(火) 14:34:57
copy a+b c_d
使えるけど?
0313デフォルトの名無しさん2009/10/06(火) 15:11:01
そもそもcopyコマンドでどんなエラーが出たか書いてない時点で…
「うまくいきません」とだけ言われてもね…
0314デフォルトの名無しさん2009/10/06(火) 15:54:22
シンボリックリンクのリンク切れを判定して削除するバッチ希望
0315デフォルトの名無しさん2009/10/06(火) 21:16:55
シェルのショートカットのこといってんの?
バッチよりVBSのほうが早いな
0316デフォルトの名無しさん2009/10/06(火) 22:02:17
Vistaや7には、ショートカットでは無いシンボリックリンクが正式に存在するんだぜ
もっとも、それ以前から微妙に存在してたけどな
0317デフォルトの名無しさん2009/10/07(水) 00:55:57
>>299
>バッチフィル名「copy.bat」 
これは…
0318デフォルトの名無しさん2009/10/07(水) 01:38:29
だから何だ? 現象を説明できるのか?
0319デフォルトの名無しさん2009/10/07(水) 01:44:32
copy.bat祭りが始まったと聞いてやって来ますた。
0320デフォルトの名無しさん2009/10/07(水) 01:50:51
まユニークな名前を付けるべきではある
0321デフォルトの名無しさん2009/10/07(水) 01:57:53
短いファイル名を付けないようにすると %~snxI はどうなる?
0322デフォルトの名無しさん2009/10/09(金) 19:22:07
フォルダのシンボリックリンクとジャンクションの違いが分らん
0323デフォルトの名無しさん2009/10/11(日) 16:13:36
ユーザの下にジャンクションがあるが、ダブルクリックするとアクセスエラー
なんのためにあるんだ?
0324デフォルトの名無しさん2009/10/11(日) 17:37:25
ダブルクリックするとアクセスエラーになるのがジャンクション
ならないのがシンボリックリンクだにゃ
つまり、エクスプローラに見せたいか、見せたくないかだにゃ
0325デフォルトの名無しさん2009/10/12(月) 22:40:21
>>317
通常のdosコマンドだったら大丈夫だったはず。

regとかfindstrとかはアウトだけど。
0326デフォルトの名無しさん2009/10/13(火) 00:57:21
pingが通るか通らないかで分岐したいんですが
どうすればよいでしょうか?
0327デフォルトの名無しさん2009/10/13(火) 01:02:45
最近のWindowsに付属のものならErrorLevelで判断できる。
0328デフォルトの名無しさん2009/10/13(火) 01:12:41
>>325
同じ名前のコマンドとバッチ、どっちが先に処理されるかって事でしょ
0329デフォルトの名無しさん2009/10/13(火) 01:13:06
本当ですね。
ありがとうございました。
0330デフォルトの名無しさん2009/10/13(火) 21:17:50
>>328
だから通常コマンドならこっちがバッチより先。
copy.batとかmove.batとかは問題なし。
0331デフォルトの名無しさん2009/10/13(火) 21:58:26
通常じゃないコマンドってなんだよw
つーかカレントディレクトリにあるもの優先だろが
0332デフォルトの名無しさん2009/10/13(火) 22:08:53
C:\>おまいら用語を知らんのか?
'おまいら用語を知らんのか?' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
0333デフォルトの名無しさん2009/10/13(火) 23:42:37
用語を知ってるレベルになるとバッチなんか使わない
0334デフォルトの名無しさん2009/10/14(水) 00:26:04
>>326
ping www.google.com && echo succ || echo fail
0335デフォルトの名無しさん2009/10/14(水) 02:45:21
組み込みコマンドがexeやbatより優先されるのって、なんか慣れない。
パスで修飾とかできないから、そうせざるを得ないのは理解できるんだけどなあ。
0336デフォルトの名無しさん2009/10/14(水) 04:37:26
だからぁ優先されないって言ってんじゃん
0337デフォルトの名無しさん2009/10/14(水) 10:29:23
内部コマンド>カレントディレクトリの外部コマンド>パス上の外部コマンド

の順番だっけ?
初期からあるコマンドに内部コマンドと外部コマンドが入り交じってるのに
順番がこんなんだから解りにくいことになってるな
0338デフォルトの名無しさん2009/10/14(水) 12:13:20
ユーザ名の一覧が改行区切りで保存されたファイルがあります。
バッチを実行したユーザがそのファイルに存在したときのみ
それ以降の処理を行うようにしたいのですが、
どのように書けばよいでしょうか?
ユーザが存在するかどうかは
findstr "name" "\\server\Users.txt" /i /x"
にて判断できるかと思ったのですが
開くことができませんと表示されてしまいます・・・
0339デフォルトの名無しさん2009/10/14(水) 13:36:24
>>338
エラーメッセージに答えでてるじゃん
FINDSTR: 開くことができません (/i)
FINDSTR: 開くことができません (/x)
0340デフォルトの名無しさん2009/10/14(水) 14:44:53
findstr.exeのプロパティを見てみ
元はresource kitのqgrep
だからシンタクスはunix流
findstr -i -x "name" "\\server\Users.txt"

findstr "name" "\\server\Users.txt" /i /x"
はdos流
0341デフォルトの名無しさん2009/10/14(水) 17:02:19
<全角文字や半角スペース入り> DELAY <数字か-で始まる数字>ms.aac
ってファイル名から<数字か-で始まる数字>だけを取り出して変数にsetしたいのですけどよい方法はありますか?
DELAYの前に半角スペースが入ることもあるのでfor /fのdelims= では駄目でした
0342デフォルトの名無しさん2009/10/14(水) 17:04:26
途中で送信
0343デフォルトの名無しさん2009/10/14(水) 18:19:33
echo %hoge:*DELAY=%
0344デフォルトの名無しさん2009/10/14(水) 20:08:15
>>343
ありがとうございます
前後を置換して取り出せました
0345デフォルトの名無しさん2009/10/15(木) 14:12:52
ドライブの空き領域のみを表示させるにはどうすればよいでしょうか?
0346デフォルトの名無しさん2009/10/15(木) 15:21:35
for /f "skip=9 tokens=3" %%i in ('dir /-c c:\') do (@set a=%%i)

for /f "skip=2 tokens=2 delims=:" %i in ('fsutil volume diskfree c:') do @echo %i
0347デフォルトの名無しさん2009/10/15(木) 18:44:57
@if "%~d1"=="" %~f0 %CD%
@mshta.exe "javascript:with(new ActiveXObject('Scripting.FileSystemObject')){try{GetStandardStream(1).Write(GetDrive('%~d1').FreeSpace);}catch(e){}}close();" | more
0348デフォルトの名無しさん2009/10/15(木) 18:51:40
wmic logicaldisk c: get freespace
0349デフォルトの名無しさん2009/10/15(木) 19:08:46
77F91AB1 mov eax,ecx
77F91AB3 mov ecx,dword ptr [ebp-10h]
77F91AB6 mov dword ptr fs:[0],ecx
77F91ABD pop edi
77F91ABE pop esi
77F91ABF pop ebx
77F91AC0 leave
77F91AC1 ret
77F91AC2 push ebp
77F91AC3 mov ebp,esp
77F91AC5 sub esp,258h
77F91ACB lea eax,[ebp+0Ch]
77F91ACE push eax
77F91ACF lea eax,[ebp-258h]
77F91AD5 push dword ptr [ebp+8]
77F91AD8 push 200h
77F91ADD push eax
0350デフォルトの名無しさん2009/10/21(水) 18:22:39
ロボコップがコマンドコムの読み込み後にバイオスをロードしました
0351デフォルトの名無しさん2009/10/21(水) 18:35:42
romは遅いからramにコピーするんですね。普通です。
0352デフォルトの名無しさん2009/10/21(水) 19:30:22
rem
0353デフォルトの名無しさん2009/10/22(木) 10:47:15
コマプロからftpでunixにデータアップすると日付時間がかわる…
変えずにアップする方法ないかな…

バッチ内部に組み込み途中で挫折した。

固めてアップとか3rdPT製アプリ使用jはナシの方向で解決策ないかねぇ…


ないか…
0354デフォルトの名無しさん2009/10/22(木) 10:55:58
>>353
フリーのftpクライアントと同じ戦略でいいじゃん。
あれは、サーバにアップロードした後シェル実行でタイムスタンプを強制しているだけなんだから。
0355デフォルトの名無しさん2009/10/22(木) 11:24:00
コマプロw
0356デフォルトの名無しさん2009/10/22(木) 11:37:21
メインフレーム業界に居る俺はコマプロと聞くとプロシージャのほうを連想してしまう…
0357デフォルトの名無しさん2009/10/22(木) 17:23:40
#define ClearFileTime(fileTime) \
(fileTime).dwLowDateTime = 0; \
(fileTime).dwHighDateTime = 0;

#define ClearFindDataFields(lpFind) \
ClearFileTime((lpFind)->ftCreationTime); \
ClearFileTime((lpFind)->ftLastAccessTime); \
(lpFind)->dwReserved0 = 0; \
(lpFind)->dwReserved1 = 0; \
(lpFind)->cAlternateFileName[0] = '\0';
ftLastModTime.dwLowDateTime =
ftLastModTime.dwHighDateTime = 0;

ftExpiryTime.dwLowDateTime =
ftExpiryTime.dwHighDateTime = 0;

ftPostCheck.dwLowDateTime =
ftPostCheck.dwHighDateTime = 0;
pfdW->dwFileAttributes = pfdA->dwFileAttributes;
pfdW->ftCreationTime = pfdA->ftCreationTime;
pfdW->ftLastAccessTime = pfdA->ftLastAccessTime;
pfdW->ftLastWriteTime = pfdA->ftLastWriteTime;
pfdW->nFileSizeHigh = pfdA->nFileSizeHigh;
pfdW->nFileSizeLow = pfdA->nFileSizeLow;
pfdW->dwReserved0 = pfdA->dwReserved0;
pfdW->dwReserved1 = pfdA->dwReserved1;

0358デフォルトの名無しさん2009/10/22(木) 18:09:56
>>353
folder.copyhere
folderitem.modifydate
でだめか?
0359デフォルトの名無しさん2009/10/22(木) 19:28:35
>354->358
これから夜勤。仕事先のでためしてみるわ
ありがとう。
0360デフォルトの名無しさん2009/10/28(水) 22:21:25
> dir /s /b xxx
ファイルが見つかりません

このエラーメッセージを出さなくするのってどうやるの?
事前にあるかどうかをチェックするというのはなしで。
0361デフォルトの名無しさん2009/10/28(水) 22:37:24
dir /s /b xxx 2>nul
0362デフォルトの名無しさん2009/10/28(水) 23:01:40
const TCHAR CH_NUL = TEXT('\0');
const TCHAR CH_ZERO = TEXT('0');
const INT MAX_EDIT_TEXT = 16;
const INT MAX_CMB_TEXT = 10;
const INT64 MAX_VALUE = ((1i64 << 60) * 6i64);
const INT64 MIN_VALUE = 1024i64;

DBGASSERT((IDS_ORDERMB == IDS_ORDERKB + 1));
DBGASSERT((IDS_ORDERGB == IDS_ORDERKB + 2));
DBGASSERT((IDS_ORDERTB == IDS_ORDERKB + 3));
DBGASSERT((IDS_ORDERPB == IDS_ORDERKB + 4));
DBGASSERT((IDS_ORDEREB == IDS_ORDERKB + 5));

INT64 Value = 0;
INT64 Decimal = 0;
INT xbOrder = e_Byte;
DWORD dwWholePart = 0;
DWORD dwFracPart = 0;
INT Order = XBytes::e_Byte;
0363デフォルトの名無しさん2009/10/28(水) 23:08:33
li r12, 1
slwi r12, r12, n
lwz r11, offsetof_Mask(r3)
and r11, r11, r12
cmpli 1, 0, r11, 0
bc 12, 6, Obj##n
addi r3, r3, 8
addi r3, r3, 12
li r12, n
rlwinm r12, r12, 2, 0, 31-2
lwz r11, 0x4(r3)
lwzx r11, r12, r11
lwz r3, 0(r3)
lwz r2, 4(r11)
lwz r11, 0(r11)
mtctr r11
li r12, n
rlwinm r12, r12, 2, 0, 31-2
lwz r11, offsetof_apfn(r3)
lwzx r11, r12, r11
lwz r3, offsetof_pvObject(r3)
lwz r2, 4(r11)
lwz r11, 0(r11)
mtctr r11
0364デフォルトの名無しさん2009/10/28(水) 23:13:10

OSはWindows XP HomeのSP3です。

一般ユーザ(usersグループ)でshutdownコマンドを
バッチによる自動実行をしたいのですが、
OSの仕様で管理者ユーザ(administratorsグループ)からしか実行
できません。

runasコマンドで、管理者ユーザで実行可能なようですが、
必ずパスワードを入力しなければならないようです。

※XP Homeの場合はrunasコマンドのオプションによるパス
ワード登録?も出来ないみたいです。

パスワード入力なしで、
一般ユーザからshutdownコマンドをバッチで実行する方法はありま
すか?
0365デフォルトの名無しさん2009/10/28(水) 23:20:56
case PowerActionNone:
uiActionId = IDS_NOACTION;
break;

case PowerActionSleep:
uiActionId = IDS_STANDBY;
break;

case PowerActionHibernate:
uiActionId = IDS_HIBERNATE;
break;

case PowerActionShutdown:
case PowerActionShutdownReset:
case PowerActionShutdownOff:
uiActionId = IDS_POWEROFF;
break;
0366デフォルトの名無しさん2009/10/28(水) 23:22:56
GlobalPowerPolicy.user.PowerButtonAc.Action = PowerActionNone;
GlobalPowerPolicy.user.PowerButtonDc.Action = PowerActionNone;
GlobalPowerPolicy.user.SleepButtonAc.Action = PowerActionNone;
GlobalPowerPolicy.user.SleepButtonDc.Action = PowerActionNone;
GlobalPowerPolicy.user.LidCloseAc.Action = PowerActionNone;
GlobalPowerPolicy.user.LidCloseDc.Action = PowerActionNone;
GlobalPowerPolicy.user.GlobalFlags = (ULONG) 0;
0367デフォルトの名無しさん2009/11/01(日) 16:09:33
bat起動時に、Shiftキーが押されていない場合はA.exe
押されている場合はB.exeを実行したいのですが、
キー押下状態の取得がうまくいきません。

@echo off
   ←ここでShiftキー押下状態の取得したいです。
IF ERRORLEVEL 1 GOTO SHIFT_KEY
START "" "D:\My Documents\A.exe"
GOTO END
:SHIFT_KEY
START "" "D:\My Documents\B.exe"
:END

ご存知の方教えてください。
0368デフォルトの名無しさん2009/11/01(日) 16:27:25
>>367
> キー押下状態の取得がうまくいきません。
何をやってうまく行かないのかを、まず書いてくれ。
OSその他の環境情報もだ。

本当は「キー押下状態の取得方法が分かりません」じゃないのか?
0369デフォルトの名無しさん2009/11/01(日) 16:45:31
わからないやつは黙ってろ
0370デフォルトの名無しさん2009/11/01(日) 17:42:07
標準のコマンドのみでは無理
DOS用だとbatuyとかあったけどWin用はしらん
0371デフォルトの名無しさん2009/11/01(日) 18:04:08
ttp://www.page.sannet.ne.jp/mtoga/etc/dos/bih-g_d2.htm
キー入力による分岐 ERRORLEVEL

ここらへん使えば出来そうかなぁと。
WinXPです。
0372デフォルトの名無しさん2009/11/01(日) 18:35:42
一から勉強して出直して来い
0373デフォルトの名無しさん2009/11/01(日) 18:40:31
三くらいからで勘弁してください
0374デフォルトの名無しさん2009/11/01(日) 18:47:17
.NET Framework 2.0がインストールされてるなら
以下をCheckShiftKey.jsのような名前を付けて保存し、
コマンドプロンプトで
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\jsc.exe CheckShiftKey.js
を実行してCheckShiftKey.exeを作ればよい。

// CheckShiftKey.js
import Accessibility;
import System;
import System.Drawing;
import System.Windows.Forms;
if (Control.ModifierKeys & Keys.Shift)
    Environment.Exit(1);
0375デフォルトの名無しさん2009/11/01(日) 22:04:39
>>374
import Accessibility;
import System.Drawing;
import System.Windows.Forms;
import System.Diagnostics;
if (Control.ModifierKeys & Keys.Shift) {
Process.Start("D:\\My Documents\\A.exe");
} else {
Process.Start("D:\\My Documents\\B.exe");
}
うまく出来ました。ありがとうございました。スレ違い失礼しました。
0376デフォルトの名無しさん2009/11/02(月) 23:17:03
>>370 標準のコマンドのみでは無理
そんなことはなかろう
0377デフォルトの名無しさん2009/11/03(火) 07:38:47
どうやるの?
0378デフォルトの名無しさん2009/11/03(火) 08:12:03
すまん勘違いだった
0379デフォルトの名無しさん2009/11/03(火) 14:39:20
せっかく解決済みなんだからほっとこーよ
0380デフォルトの名無しさん2009/11/03(火) 15:31:38
すまん余計なお世話だった
0381デフォルトの名無しさん2009/11/03(火) 16:08:05
>>364
タスクスケジューラを使えばできるよ
0382デフォルトの名無しさん2009/11/03(火) 17:04:12
質問してもよろしかったでしょうか?

バッチで標準入力がリダイレトされているか判定できましたでしょうか?
0383デフォルトの名無しさん2009/11/03(火) 20:00:57
はい
0384デフォルトの名無しさん2009/11/03(火) 22:39:51
foo.bat | bar.bar > baz.txt
で
foo, barが> baz.txtされてるかどうかを検出、分岐するってことなら無理だろ。
0385デフォルトの名無しさん2009/11/04(水) 00:21:16
>標準出力の話じゃないだろ。
0386デフォルトの名無しさん2009/11/04(水) 14:50:20
foo.bat | bar.bar > baz.txt
は知らんが
foo.bat > baz.txt
や
foo.bat | bar.bat
なら可能だろ。
0387デフォルトの名無しさん2009/11/04(水) 15:25:48
>質問してもよろしかったでしょうか?
過去に遡って質問するわけじゃないのだから、過去について聞くことは無意味だと思うのだが。
0388デフォルトの名無しさん2009/11/04(水) 15:36:16
過去から現在に渡ってよろしいことになっていたかどうかを聞いているので
問題なかろう。
0389デフォルトの名無しさん2009/11/04(水) 20:10:06
>質問してもよろしかったでしょうか?
という質問をした時点で、その質問は過去の事象で、その可否を聞いているのだろう
0390デフォルトの名無しさん2009/11/04(水) 20:20:16
うざ
0391デフォルトの名無しさん2009/11/04(水) 21:04:37
メモ帳(memo.exe)でテキストファイルを開くコマンドを書いたのだが、
バッチを実行するとメモ帳は開くがプロンプトが閉じない。

メモ帳を開いた時点でプロンプトを閉じるにはどうすればよい?

以下バッチの内容
----------------------------------------
C:\Program 〜省略〜 \memo.exe test.txt
EXIT
----------------------------------------

0392デフォルトの名無しさん2009/11/04(水) 21:08:18
のだが、

またお前か
0393デフォルトの名無しさん2009/11/04(水) 21:10:09
start
0394デフォルトの名無しさん2009/11/04(水) 21:16:20
>>393
ありがとう。
無事できました。
0395デフォルトの名無しさん2009/11/04(水) 22:04:18
うざ
0396デフォルトの名無しさん2009/11/05(木) 17:02:11
>>393
start バッチ
とやってみたのだが、閉じない。
0397デフォルトの名無しさん2009/11/11(水) 19:06:13
test1
test2
test3
test4

という文字の入ったtest.txtがあるとします。

バッチファイルからピンポイントで二行目(test2)を引き出して変数とおくにはどうしたらよいでしょうか?

for /f "skip=1" %%a in (test.txt) do set hensuu=%%a
を使っても、
hensuu=test2
hensuu=test3
hensuu=test4
となってしまい結局変数はtest4になってしまいます。

どなたか教えてください。
0398デフォルトの名無しさん2009/11/11(水) 21:05:24
setlocal enableextensions enabledelayedexpansion
set hensuu=
for /f "skip=1" %%a in (test.txt) do if "!hensuu!"=="" set hensuu=%%a
0399デフォルトの名無しさん2009/11/12(木) 00:20:18
>>398
ありがとうございます!できました!

enableextensionsでコマンド拡張機能を有効にしたからできるようになったってことですか?
コマンド追ってググったりしてもこの文でなぜできるのか理解できないです
0400デフォルトの名無しさん2009/11/12(木) 03:09:59
enabledelayedexpansionで遅延展開を有効にしたから
forの中でsetした変数(hensuu)が参照できるようになっている。
遅延展開が無効だと
if "%hensuu%"=="" の部分がfor実行段階で if ""=="" になって常に真ということになる。
0401デフォルトの名無しさん2009/11/12(木) 11:32:45
>>400

遅延展開を有効にすることでhensuu=test2にその時点でなるから、
if "%hensuu%"=="" には引っかからずにその時点でforを終了させられるという事ですね。
遅延展開についてよく理解できました。
わかりやすいレスありがとうございます。
0402デフォルトの名無しさん2009/11/12(木) 14:18:58
forが終了するわけじゃない。
hensuu=test2となった以降はifが偽になるため何も実行されずにループする。
test.txtの残りが凄く長ければそれだけ終了時間は伸びる
0403デフォルトの名無しさん2009/11/12(木) 18:50:55
>>402
てことは
test3は偽、よって実行なし
test4は偽、よって実行なし
・
・
・
って感じに最後の行になるまでされるわけですか。
だとしたら500行のtest.txtだとこれが500行分されるんですね・・・
やっと完全に理解できました。ありがとうございます
0404デフォルトの名無しさん2009/11/13(金) 22:26:52
そんな無駄なことせんでも
0405デフォルトの名無しさん2009/11/13(金) 22:28:31
for /f "skip=1" %%a in (test.txt) do set hensuu=%%a&goto x
:x
0406デフォルトの名無しさん2009/11/14(土) 00:03:56
遅延展開使わんでも
set hensuu=
for /f "skip=1" %%a in (test.txt) do if not defined hensuu set hensuu=%%a
0407デフォルトの名無しさん2009/11/15(日) 18:09:51
if 条件A or 条件B (
処理1
) else (
処理2
)

ここで「条件A or 条件B」と言う構文はバッチファイルでは使えないんでしたっけ?
0408デフォルトの名無しさん2009/11/15(日) 18:25:03
if/?
0409デフォルトの名無しさん2009/11/15(日) 21:19:54
>>408
解決しました。ありがとうございます。
0410デフォルトの名無しさん2009/11/16(月) 13:00:34
set or=
if 条件A set or=true
if 条件B set or=true
if defined or (
処理1
) else (
処理2
)
0411デフォルトの名無しさん2009/11/17(火) 17:10:49
more|notepad /dev/stdin
みたいなことはできないのですか?
0412デフォルトの名無しさん2009/11/17(火) 23:16:31
echoで2段階にファイル書き出しをしたいのですが、うまくできません。

echo echo start "" コマンド.bat "引数" >B.bat >>A.bat

上記コマンドを実行して、まずA.batに
echo start "" コマンド.bat "引数" >B.bat
を書き出し、その作成したA.batを実行しB.batに
start "" コマンド.bat "引数"
ができるようにしたいのですが、実際には最初のコマンドを実行したところでA.batに
echo start "" コマンド.bat "引数"
のように、 >B.batが抜けた状態で作成されます。

何かいい方法は無いでしょうか。ご教示お願いいたします。
0413デフォルトの名無しさん2009/11/17(火) 23:40:05
こんな感じか?
echo echo start "" コマンド.bat "引数" ^>B.bat >A.bat
0414デフォルトの名無しさん2009/11/18(水) 01:08:33
>>413

当方412ではありませんが、感動しました。
^>を使えばそういう事ができるんですね
差し支えなければ、^のしくみを教えていただけないでしょうか?
0415デフォルトの名無しさん2009/11/18(水) 01:19:52
(^^)
0416デフォルトの名無しさん2009/11/18(水) 11:42:53
>>414
単なるエスケープ文字
0417デフォルトの名無しさん2009/11/18(水) 17:30:23
^^は^をエスケープしてるので
echo (^^)
は
(^)
となる
04184122009/11/18(水) 20:00:18
>>413
レス遅くなって申し訳ないです。ありがとうございました!
ばっちり希望どおりの動作をしてくれるようになりました!

>>416>>417
仕組みがよくわかってなかったので勉強になりました。

みなさんどうもありがとうございました。
0419デフォルトの名無しさん2009/11/19(木) 22:15:12
bash とかでいうところの``で囲んだ時のような、コマンドの出力結果をコマンドラインオプションに回す文法はありませんか?
0420デフォルトの名無しさん2009/11/19(木) 23:41:46
for /f "usebackq" %I in (`dir /b`) do echo %I
0421デフォルトの名無しさん2009/11/20(金) 00:28:27
>>420
ありがとうございました
0422デフォルトの名無しさん2009/11/21(土) 01:56:20
usebackqはコマンド中に「'」を使う必要がある時に「'」の代わりに「`」を使うってオプションだろ?
for /f %i in ('dir /b') do echo %i
でいいのに何故わざわざusebackq付けんの?
0423デフォルトの名無しさん2009/11/21(土) 02:15:37
420じゃないけど常に usebackq 付けるようにした方が面倒な事考えなくて済む。

http://www.atmarkit.co.jp/fwin2k/operation/command008/command02.html
0424デフォルトの名無しさん2009/11/21(土) 16:02:45
好みだろ
どーでもいー
04254232009/11/21(土) 16:20:50
>>424
そう、好み
てか昔ハマッたことがあるから、俺は付ける派
0426デフォルトの名無しさん2009/11/24(火) 13:26:23
外部プログラムを起動させるコマンドを実行すると
そのアプリが終了するまでbatへ制御が戻らないのですが
それを回避することは可能ですか?
0427デフォルトの名無しさん2009/11/24(火) 13:48:22
startコマンドを使う
0428デフォルトの名無しさん2009/11/24(火) 16:10:21
batファイルを分けることなく処理の優先順位を変更する方法があれば教えてください。
0429デフォルトの名無しさん2009/11/24(火) 18:57:10
startコマンドを使う
04304282009/11/24(火) 19:10:35
>>429
start /b /low :exec ではうまくいきませんでした。
どのように記述すればいいのでしょうか?
0431デフォルトの名無しさん2009/11/24(火) 22:29:40
ところで
ttp://itpro.nikkeibp.co.jp/article/Windows/20051006/222374/
start /b test.bat
てどういう意味がある?
call test.bat
とは違うの?
0432デフォルトの名無しさん2009/11/25(水) 12:44:00
ウィンドウ開かないだけで、別プロセスのcmd.exeが立ち上がる…んだと思う。
0433デフォルトの名無しさん2009/11/25(水) 20:20:58
>>431
誰が書いたか知らんが、阿呆が意味も分らず、最初のオプション使って、無理矢理、使用例を作っただけなんだろ
0434デフォルトの名無しさん2009/11/25(水) 20:25:13
>>430
goto %1
start /low "" %0 :exec
0435デフォルトの名無しさん2009/11/27(金) 16:18:48
そういやstartって

start file
はokで
start "file"
はngな時があるけどどういう理屈なんだろうか
0436デフォルトの名無しさん2009/11/27(金) 16:27:01
理屈って言う程のことはないよ
start/?見りゃ自明だろ?
0437デフォルトの名無しさん2009/11/27(金) 16:32:00
>>430
wmiのsetpriorityを使え
0438デフォルトの名無しさん2009/11/27(金) 20:12:44
そんなこと言っても難しかろ
startにしとけ
0439デフォルトの名無しさん2009/11/29(日) 02:25:00
data.dat というファイルがあったとして、これを一日に一回
data1129.datみたいに日時をつけてバックアップとして保存していけるようなバッチファイル
作れる方いましたら教えてください

スタートアップに登録するとして、同日に一回でも度ってあったらコピーしないという仕様で
0440デフォルトの名無しさん2009/11/29(日) 03:40:36
if not exist data%date:/=%.dat copy /b data.dat data%date:/=%.dat
0441デフォルトの名無しさん2009/11/29(日) 13:46:20
プロンプト文字にerrorlevel出すにはpromptコマンドにどう書けばよい?
0442デフォルトの名無しさん2009/12/02(水) 15:20:51
これは、結局バッチスクリプトとは関係ないんですけど、copyコマンドでオプションに
/A(テキストモード)を指定しても、BOMありUTF-8のテキストファイルを結合すると
ファイルとファイルの間にBOMが残るんです。
現在はWinXPのコマンドプロンプトでしか試せないんですが、VistaやWin7なら、ちゃん
とBOMを外してくれますか?
0443デフォルトの名無しさん2009/12/02(水) 15:40:21
Vistaでやってみたが、入ってるね
/Aは改行コードしか見ないだろうから仕方がないかも
0444デフォルトの名無しさん2009/12/02(水) 15:44:42
あ、改行とEOFだったかな
0445デフォルトの名無しさん2009/12/02(水) 19:41:05
/A ASCII テキスト ファイルとして扱います。

UTF-8じゃないのに何言ってんだか
0446デフォルトの名無しさん2009/12/02(水) 19:50:38
/Aが改行をどうするって?
0447デフォルトの名無しさん2009/12/02(水) 21:49:14
COPY /8
0448デフォルトの名無しさん2009/12/03(木) 14:30:54
バッチスクリプトならできるが、関係ないな
04494422009/12/03(木) 18:30:00
>>443
Vistaでも駄目ですか、どなたかWin7の状況を教えて下さい。
0450デフォルトの名無しさん2009/12/03(木) 20:27:40
逆に7でこの挙動が変わってたらおかしいでしょう
0451デフォルトの名無しさん2009/12/03(木) 20:43:06
別におかしくないが?
0452デフォルトの名無しさん2009/12/03(木) 20:46:19
chcp 65001
0453デフォルトの名無しさん2009/12/03(木) 21:15:54
BOM削除してからcopyすれば?
0454デフォルトの名無しさん2009/12/03(木) 21:54:01
ところで^Z削除するのはどうすれば?
0455デフォルトの名無しさん2009/12/04(金) 15:10:43
>>452
フォントを変えるコマンドは?
0456デフォルトの名無しさん2009/12/04(金) 21:47:30
ぐぐれ
まあ変えても解決にはならんが
0457デフォルトの名無しさん2009/12/04(金) 21:58:36
作れ
setconsolefont()
setcurrentconsolefontex()
0458デフォルトの名無しさん2009/12/08(火) 13:13:56
代替コマンドシェルにnyacusなんてのがあるんだな。
cmdと比べると構文が結構まともだ。
PowerShellより圧倒的に軽いしちょっと覚えてみる気になった。
0459デフォルトの名無しさん2009/12/09(水) 03:55:32
nyacus落ちない?数年前に使ったけど、それでやめた。
0460デフォルトの名無しさん2009/12/10(木) 01:06:30
今のところ落ちてないよ。まだ大した使い方してないけど。
最終更新日が先月でまだまだメンテが続いてるね。
0461デフォルトの名無しさん2009/12/11(金) 15:53:24
CMD.exeのfor文は頑張りすぎ
0462デフォルトの名無しさん2009/12/11(金) 18:23:45
runasの/trustlevelってどういうときに使うの?
0463デフォルトの名無しさん2009/12/11(金) 21:14:34
for /F %%a in (filelist.txt) do move "%%a" %dir%
filelist.txtにファイルの一覧をリストアップしてそのファイルをすべて特定のフォルダへ移動したいです
ですがファイル名に半角スペースが含まれていると移動されずにスルーされてしまいます
困ってしまいます
お願いします
0464デフォルトの名無しさん2009/12/11(金) 21:15:18
>>439
>>440
これの改良版で1週間分のみバックアップを残す仕様に出来る方おりませんか?
ファイルが7個以上あった場合、古いものから消していくようになると思うんですが
0465デフォルトの名無しさん2009/12/11(金) 21:25:48
>>463
"delims="
0466デフォルトの名無しさん2009/12/11(金) 21:32:10
>>464
for /f "skip=6 delims=" %%i in ('dir /b/o-d data*.dat') do del %%i

これで新しいものから順に6個を除いたファイルは全部消える
0467デフォルトの名無しさん2009/12/11(金) 21:33:20
>>465
ありがとうございました
助かりました
0468デフォルトの名無しさん2009/12/12(土) 11:52:30
カレントディレクトリを取得するのに

for %i in (.) do set cdir=%~dpnxi

とかやってるんですが、もっとスマートな方法はないですしょうか?
0469デフォルトの名無しさん2009/12/12(土) 12:04:19
%CD%とかじゃ駄目だっけ?
0470デフォルトの名無しさん2009/12/12(土) 15:46:31
フルパスをゲットするなら%cd%でいい
c:\a\b\c\d\thisdir
のthisdirをゲットするなら
%cd:\=&set cdir=%
echo %cdir%
とか。
0471デフォルトの名無しさん2009/12/12(土) 19:32:42
set cdir=.
0472デフォルトの名無しさん2009/12/13(日) 03:10:06
set cdir=.
echo %cdir%
.

ダメじゃんw
0473デフォルトの名無しさん2009/12/13(日) 19:05:35
set cdir=%cd%
echo %cdir%
0474デフォルトの名無しさん2009/12/14(月) 11:07:38
%CD%なんてあったんですね。ありがとうございます。
カレントディレクトリがセットされた環境変数は ありそうだと思って
set<enter>して探したのですが、これにはでないみたいです。

「特殊な環境変数」でググると%CD%以外にもいろいろ知ることができました。
0475デフォルトの名無しさん2009/12/14(月) 14:11:28
set/?
0476デフォルトの名無しさん2009/12/14(月) 14:14:37
カレントディレクトリはドライブごとにある
echo %=c:%
echo %=d:%
0477デフォルトの名無しさん2009/12/14(月) 14:16:28
>>476
知らなかった・・・
0478デフォルトの名無しさん2009/12/14(月) 14:37:09
set,
で=*環境変数も表示
0479デフォルトの名無しさん2009/12/14(月) 14:40:28
2009年も終わろうとしてるのに今更cmdのtipsなんて何の意味がある。
PowerShellに乗り換えようぜ。
0480デフォルトの名無しさん2009/12/14(月) 15:50:56
=::=::\
は何?
0481デフォルトの名無しさん2009/12/14(月) 22:25:59
>>479
PowerShellがNTに載ったらね
0482デフォルトの名無しさん2009/12/15(火) 14:51:01
おまえらスレチガイ
http://pc12.2ch.net/test/read.cgi/win/1221046998/
0483デフォルトの名無しさん2009/12/21(月) 15:23:45
ipアドレスの3ブロック目で判断して、
レジストリを修正するバッチファイルが作りたいのです。

ipconfigしても情報が多すぎるし、
ドット2つの後ってどうしたらいいんでしょう…。

どなたかご教授願います。
0484デフォルトの名無しさん2009/12/21(月) 15:26:03
for /f "delims=. tokens=3" %I in ("1.2.3.4") do echo %I
0485sage2009/12/21(月) 16:36:18
>>484

素晴らしすぎます!!!
というか私の知識不足…頑張り不足…でしょうか。
ありがとうございました!
04864832009/12/21(月) 19:26:24
お陰様でここまできました。

for /f "tokens=14 delims=: " %%I in ('ipconfig ^| find "IP Address"') do set IP=%%I
for /f "tokens=3 delims=." %%I in ("%IP%") do echo %%I

echo %IP%

ただ、スマートじゃないというかなんというか…。
こんなもんでしょうかね。
0487デフォルトの名無しさん2009/12/21(月) 22:05:22
tokens=14 ってなんじゃそら。
skip=n でn行飛ばせるって知ってるよな?
0488デフォルトの名無しさん2009/12/21(月) 22:55:04
出たか、知ったかぶり。お手並み拝見
0489デフォルトの名無しさん2009/12/22(火) 13:14:33
横からだけど俺的にはアリだな。
tokens=14 を数える事は二度と無いとしても、将来コピペで使い回した時、
このスレでのやりとりを良い思い出として生暖かく思い出せるw

"tokens=2 delims=:" だったら何も心に響かない。
0490デフォルトの名無しさん2009/12/22(火) 17:32:15
OSにもれなくついてくるおまけの機能に多くを求めてはいけない。
メモ帳やペイントに不満を感じるなら勝手に別のアプリをお使いくださいというのがMSの基本姿勢。
不便だろうが欠陥があろうが知ったことではない。
0491デフォルトの名無しさん2009/12/22(火) 17:47:03
delimsを.だけにすれば1行で書けるだろ?
for /f "tokens=?? delims=." %%I in ('ipconfig ^| find "IP Address"') do echo %%I
??は自分で数えろ
0492デフォルトの名無しさん2009/12/22(火) 18:26:46
skipがどうしたって?
0493デフォルトの名無しさん2009/12/22(火) 18:45:11
どんぐりの背比べ
04944832009/12/22(火) 18:47:08
>>491
ありがとうございました。

for /f "tokens=15 delims=." %%I in ('ipconfig ^| find "IP Address"') do echo %%I

でバッチリ取得出来ました。
これが一番スマートですね。助かりました!
0495デフォルトの名無しさん2009/12/22(火) 18:53:36
バッチごときでスマートって
しまむらで洋服買って自慢してるようなもんか
0496デフォルトの名無しさん2009/12/22(火) 20:09:54
すっぱい葡萄
0497デフォルトの名無しさん2009/12/22(火) 20:45:16
たぶん
for /f "tokens=15 delims=." %%I in ('ipconfig') do echo %%I
でもいける
0498デフォルトの名無しさん2009/12/22(火) 20:53:10
どんぐりの背比べ
0499デフォルトの名無しさん2009/12/22(火) 21:55:38
すっぱい葡萄
0500デフォルトの名無しさん2009/12/23(水) 14:33:10
skipがどうしたって?
0501デフォルトの名無しさん2009/12/26(土) 12:04:04
フォルダを五十音で分配したいのですが、バッチファイルでできるんでしょうか?
1)具体的にはデジカメで写真を撮影した事を想定してください。
  D:\デジカメ写真データ\001.jpg
  D:\デジカメ写真データ\002.jpg
        ・
        ・
  D:\デジカメ写真データ\009.jpg
  D:\デジカメ写真データ\010.jpg
2)それを撮影場所ごとに整理します。(ここまでは人間の手でやります。)
  D:\デジカメ写真データ\きんかくじ(金閣寺)\001.jpg
  D:\デジカメ写真データ\きんかくじ(金閣寺)\002.jpg
  D:\デジカメ写真データ\きよみずでら(清水寺)\003.jpg
  D:\デジカメ写真データ\きよみずでら(清水寺)\004.jpg
  D:\デジカメ写真データ\きよみずでら(清水寺)\005.jpg
  D:\デジカメ写真データ\とうだいじ(東大寺)\006.jpg
  D:\デジカメ写真データ\ほうりゅじ(法隆寺)\007.jpg
  D:\デジカメ写真データ\ほうりゅじ(法隆寺)\008.jpg
  D:\デジカメ写真データ\ほうりゅじ(法隆寺)\009.jpg
  D:\デジカメ写真データ\ほうりゅじ(法隆寺)\010.jpg
3)ここでバッチファイルをくりっくすると
  D:\読み順フォルダ\か行\きんかくじ(金閣寺)\001.jpg
  D:\読み順フォルダ\か行\きんかくじ(金閣寺)\002.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\003.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\004.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\005.jpg
  D:\読み順フォルダ\た行\とうだいじ(東大寺)\006.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\007.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\008.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\009.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\010.jpg
とやりたいです。
0502デフォルトの名無しさん2009/12/26(土) 12:08:36
  D:\読み順フォルダ\か行\きんかくじ(金閣寺)\002.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\003.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\004.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\005.jpg
  D:\読み順フォルダ\た行\とうだいじ(東大寺)\006.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\007.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\008.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\009.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\010.jpg
  D:\読み順フォルダ\か行\きんかくじ(金閣寺)\002.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\003.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\004.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\005.jpg
  D:\読み順フォルダ\た行\とうだいじ(東大寺)\006.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\007.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\008.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\009.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\010.jpg
  D:\読み順フォルダ\か行\きんかくじ(金閣寺)\002.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\003.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\004.jpg
  D:\読み順フォルダ\か行\きよみずでら(清水寺)\005.jpg
  D:\読み順フォルダ\た行\とうだいじ(東大寺)\006.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\007.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\008.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\009.jpg
  D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\010.jpg
0503デフォルトの名無しさん2009/12/26(土) 12:12:03
そこまで人の手でやれよ。
0504デフォルトの名無しさん2009/12/26(土) 12:17:13
写真を分類するソフトなら腐るほどある。
0505デフォルトの名無しさん2009/12/26(土) 12:57:24
ゴミの山(Dドライブ)を見てたらすんごいもの見つけたww

http://codepad.org/xzEwdV3R

なんかかなり昔作ったVB風の記述でバッチファイルを吐く言語の
ソースファイルっぽいw

今コンパイラ探してる
0506デフォルトの名無しさん2009/12/26(土) 13:04:17
#EXPAND BatchBasic

Sub Main()
  Print("Hello World.")
End Sub

Sub Print(str)
  #NATIVE ECHO %str%
End Sub
0507デフォルトの名無しさん2009/12/26(土) 13:06:23
>>501
できるけど、その程度の代物だったら手作業と大して変わらん手間だろ。
0508デフォルトの名無しさん2009/12/26(土) 14:48:26
>>505
batに生産性を求めてどうする
0509デフォルトの名無しさん2009/12/26(土) 20:27:40
>>508
生産性がよくなるんだろ?
0510デフォルトの名無しさん2009/12/26(土) 22:38:09
管理者として実行されてるか?を判定するには?
0511デフォルトの名無しさん2009/12/27(日) 10:14:31
管理者権限でしかアクセスできないフォルダにアクセスしてERRORLEVELで調べる
0512デフォルトの名無しさん2009/12/27(日) 12:08:47
環境変数比較してみたら管理者権限の場合SESSIONNAMEが定義されてなかったので
それで判別できる? (Vista x64で確認)
0513デフォルトの名無しさん2009/12/27(日) 12:27:56
runas /trustlevel:制限しない rundll32 >nul
echo %errorlevel%

ちゃんと動くかは分からない
0514デフォルトの名無しさん2009/12/27(日) 14:35:24
echo>file
dir/q file
0515デフォルトの名無しさん2009/12/27(日) 15:01:58
mklink a a
echo %errorlevel%
0516デフォルトの名無しさん2009/12/27(日) 16:00:42
net user %username% |findstr "*administrators"

MS謹製のwhoamiに権限表示があった気がする
0517デフォルトの名無しさん2009/12/27(日) 17:58:10
>>516
UACの昇格
0518デフォルトの名無しさん2009/12/27(日) 22:26:55
>>512
Vista 32bit x86でも確認したよー
0519デフォルトの名無しさん2009/12/31(木) 18:56:58
rundll32 shell32,IsUserAnAdmin
0520デフォルトの名無しさん2010/01/04(月) 17:02:50
バッチファイルの引数をプラス記号で繋ぐにはどうしたら良いでしょう。例えば、

start "" iexplore "http://www.google.com/search?lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%*"

ここの %* を、引数の数に合わせて %1+%2+.... とやる方法です。
0521デフォルトの名無しさん2010/01/04(月) 20:39:55
http://codepad.org/w6ugNsAm

エスケープには対応してないから使えるのは英字だけなのでよろしく
0522デフォルトの名無しさん2010/01/04(月) 20:42:43
もっとうまい方法がある気がしてならないのでちょっと晒してみる。

----------ここから
set Param=%1

:loop
if not "%2"=="" set Param=%Param%+%2
shift
if not "%2"=="" goto loop

start "" iexplore "http://www.google.com/search?lr=lang_ja&ie=sjis&oe=UTF-8&q=%Param%"
----------ここまで

細かい事考えなければこんな感じ?
引数を繋ぐスマートな方法を知りたいです。。。
0523デフォルトの名無しさん2010/01/04(月) 20:44:47
つか誰かHttpEscapeってサブルーチンでも作って
05245222010/01/04(月) 20:48:01
>>521
そっか、先に shift させた方がずっと美しいや。
参考になりましたです。
05255212010/01/04(月) 21:06:29
いや、スマートにするのは簡単だけど、

http://codepad.org/GKyUSzKv

なんかつまんないなあ。^^;
05265222010/01/04(月) 21:15:25
>>525
これこれ、こーゆーの求めてました!

ありがとうございました >>521 、きっかけをくれた >>520 にも感謝。

05275202010/01/05(火) 00:22:01
>>521, 522
お二人ともありがとうございました。
特に >>525 が素晴しく、大変勉強になりました!!
0528デフォルトの名無しさん2010/01/05(火) 01:05:21
そもそもぐぐるなら置換不要
0529デフォルトの名無しさん2010/01/06(水) 18:02:19
そうなの?
0530デフォルトの名無しさん2010/01/10(日) 19:19:39
質問なんですが、
例としてimg001、img002、img003というファイルがあったとして
imgに当てはまるものを一気に削除するというスクリプトはあるでしょうか?
0531デフォルトの名無しさん2010/01/10(日) 19:36:16
delete img*
0532デフォルトの名無しさん2010/01/10(日) 19:47:41
>>531
erase img*
0533デフォルトの名無しさん2010/01/10(日) 20:56:26
>>531-532
「imgに当てはまるもの」→ del img
05345302010/01/11(月) 01:04:30
>>531-533
ありがとうございます。
delの場合は del img*でいけました。
0535デフォルトの名無しさん2010/01/11(月) 01:16:52
>>531-533
おまえら質問に答えてない
>>530
だれかが作ればある
0536デフォルトの名無しさん2010/01/11(月) 07:58:08
修飾子 %~$PATH: の使い方について質問があります。
引数のファイルを %PATH% から検索し、エクスプローラーで開く
バッチファイルを書いてみました。

---- open.bat ----
set x=%~$PATH:1
if %x% == "" goto eof
start "" explorer.exe /select,%x%
----
使用法: open.bat explorer.exe / open.bat cmd.exe / open.bat msconfig.exe

ここで、拡張子を .exe に決め打ちし、下記が動作するようにするには
どうすれば良いでしょうか。

open.bat explorer / open.bat cmd / open.bat msconfig
0537デフォルトの名無しさん2010/01/11(月) 09:31:51
下記のようにしてとりあえず希望の動作が出来るようになりました。
もう少し一般的な方法があれば教えて下さい。

---- open_mod.bat ----
set x=%~$PATH:1
if not "%x%" == "" goto open
for %%i in (%1.exe) do (
set x=%%~$PATH:i
)
if not exist "%x%" exit

:open
start "" explorer.exe /select,%x%
----
0538デフォルトの名無しさん2010/01/11(月) 14:54:18
for %%i in (%1.exe) do for %%j in (%~$PATH:1 %%~$PATH:i) do start "" explorer.exe /select,%%j
0539デフォルトの名無しさん2010/01/12(火) 18:41:21
for /f %%i in ('where %1') do start "" explorer.exe /select,%%i
05405362010/01/13(水) 00:43:51
>>538, 539
どちらもすごいです!! たいへん勉強になりました。
0541デフォルトの名無しさん2010/01/13(水) 10:54:58
>>539
これのうち、 'where %1' の部分が良く理解できません。
解説のあるウェブサイトを紹介してもらえないでしょうか。
0542デフォルトの名無しさん2010/01/13(水) 13:14:07
http://www.atmarkit.co.jp/fwin2k/win2ktips/1151where/where.html
0543デフォルトの名無しさん2010/01/13(水) 23:29:11
>>542
やっと理解しました。where は OS のコマンドで、
また for /f in %%変数 (...) の括弧内ではコマンドが使えるのですね。
情報ありがとうございました。
0544デフォルトの名無しさん2010/01/14(木) 23:23:03
%1 %2 ... は%*
%2 ... をまとめて取り出せないかな
バラして組み立てるしかないかな
0545デフォルトの名無しさん2010/01/14(木) 23:26:37
shiftすりゃいいんじゃねーの
0546デフォルトの名無しさん2010/01/15(金) 02:34:52
shift
echo %*
0547デフォルトの名無しさん2010/01/15(金) 07:02:48
これだと %1 も出てくるな…
0548デフォルトの名無しさん2010/01/15(金) 09:28:36
shift /2
0549デフォルトの名無しさん2010/01/15(金) 13:11:40
for /f "tokens=1*"でとれるんじゃねーの
0550デフォルトの名無しさん2010/01/15(金) 13:48:41
shiftじゃできないんじゃねーの
0551デフォルトの名無しさん2010/01/15(金) 19:42:14
for /f "tokens=1*"じゃできないんじゃねーの
0552デフォルトの名無しさん2010/01/15(金) 20:31:47
for /f "tokens=1*" %%i in (%*) do echo %j
0553デフォルトの名無しさん2010/01/15(金) 21:44:02
for /f "tokens=1*" %%i in ("%*") do echo %j
だろ
0554デフォルトの名無しさん2010/01/16(土) 11:29:18
この言語はforの使い方がおかしい
0555デフォルトの名無しさん2010/01/16(土) 15:33:31
ワイルドカードを展開するコマンドにforという名前をつけてしまったのがそもそもの間違い。
0556デフォルトの名無しさん2010/01/16(土) 16:13:29
for /f "tokens=1*" %i in ("1 2 3 4") do echo %j
2 3 4
ほれ
0557デフォルトの名無しさん2010/01/16(土) 17:16:36
for /f "tokens=1*" %i in (""1 2" "3 4"") do echo %j
2" "3 4"
ほれ
0558デフォルトの名無しさん2010/01/18(月) 15:10:32
set a=%*
echo !a:%1=!
0559デフォルトの名無しさん2010/01/19(火) 10:25:24
@echo off
copy /y E:\Program\TAB_Browser\DonutRAPT\Default.dfg "E:\Back_Up\Donut_RAPT_Default"
@echo
exit


今使ってるバッチファイル(バックアップファイル作成)をまんま↑に載せました。
別段支障は無いのですが、↑だと、1ファイルのバックアップしか出来ませんので、
万一、空ファイルが上書きされてしまった場合、痛いです。

(上記のバッチはドーナツ派は何となくピンと来てくれると思いますが)

そこで、そのリスクを減らす為に、例えば、バッチ処理する度に、ランダムに、例えば・・

Default1.dfg、Default2.dfg、Default3.dfg

のいずれかのファイル名でE:\Back_Up\Donut_RAPT_Defaultフォルダにバックアップをするには
どのようにすれば宜しいでしょうか?
0560デフォルトの名無しさん2010/01/19(火) 11:39:09
ランダムの意味わかってないだろ
05615592010/01/19(火) 11:52:46
1〜3までの数字をアットランダムに付けたいのですが・・。
Default1.dfgというファイル名での保存が、複数回続いても構いません。
(きっちり、1→2→3という順番で、バッチ処理する度にファイル名が変わってくれなくて構わないです)
0562デフォルトの名無しさん2010/01/19(火) 14:36:05
set /a random=%random%%%3+1
copy /y E:\Program\TAB_Browser\DonutRAPT\Default.dfg "E:\Back_Up\Default%random%.dfg"
05635592010/01/19(火) 15:29:47
>>562
ありがとうございます!
コピー先は直しましたが、まさに目的は叶いました。
本当、感謝です!
0564デフォルトの名無しさん2010/01/19(火) 18:15:40
>>560

>>560
0565デフォルトの名無しさん2010/01/19(火) 19:39:38
>>564
0566デフォルトの名無しさん2010/01/20(水) 13:48:59
サイクリック版作りたかったら作ってみ
0567デフォルトの名無しさん2010/01/23(土) 03:00:27
>>560

>>559の例の場合は3本のくじからの無作為抽出ってことだろ?
ランダムって表現で間違っちゃいない

っつーか、>>562が物語ってるじゃん↓

> set /a random=%random%%%3+1
0568デフォルトの名無しさん2010/01/23(土) 21:44:08
>>567

560は562が書かれる前にレスの内容がわかるエスパーなんですね。
0569デフォルトの名無しさん2010/01/24(日) 05:15:14
別に560の前の時点で、環境変数(%random%)を使えば良いのは判る訳で
そこへ560の質問の意味が解からん
0570デフォルトの名無しさん2010/01/24(日) 12:43:25
iPod nano を購入しようと思っているのですが、nano のランダム再生について質問です。

現在使っている他メーカーのMP3プレイヤーのランダム再生はどうやら、
 再生リストの中からランダムで選び出した曲を決まった順番で再生
しているらしいのです。
例えばフォルダの中にA,B,C,D,Eの5曲がある場合にランダム再生を実行すると、
自動的にA,C,Eを選び出し(ここは流石にランダムで選んでるようです)、
以降、A,C,E,A,C,E,...のように、同じ曲ばかりを繰り返します。
実際に少ない曲数で試したことはないのですが、
同じフォルダの中でランダム再生をしているとそのうち、
次に再生される曲がわかるようになるのでたぶん間違いないです。

で、iPod nano のランダム再生はどのような再生方法なのかに興味があります。

理想は、
・一度流した曲は、再生リスト内の曲を全て再生するまでは再生しない。
というものです。
フォルダの中にA,B,C,D,Eの5曲がある場合、
最初にBを再生した後は、次に来る曲はA,C,D,Eのいずれかで、
次にAが選択された場合は、次に来る曲はC,D,Eのいずれか、といった再生法を望んでいます。
iPod nano の購入の参考にしたいので、
詳しくわかる方いましたらよろしくお願いします。
0571デフォルトの名無しさん2010/01/24(日) 12:44:52
iTunesとiPodの場合「ランダム」ではなく「シャッフル」と呼び、
その呼び名の通り曲順をシャッフルして再生する機能になります。
1曲ごとに再生する曲を対象全体からランダムに選ぶのではなく、
最初に対象全体をシャッフルして混ざったリストを作りそれを順番に再生する、
つまりトランプをシャッフルしてから一枚づつめくっていく様な感じになり、
あなたの希望の様に
「一度流した曲は、再生リスト内の曲を全て再生するまでは再生しない。」
と言う状態になります。
iTunes上でプレイリストを選択した状態で左下のシャッフルボタンを
押してみると、リスト内でシャッフルしてそれを順に再生している事が
よく分かると思います。
(その際画面表示のソート順を通常なら左端にある曲順の数字欄に
しておかないとシャッフルされる様子が見れません。曲の上部に
「名前」や「アーティスト」、「アルバム」等と書いてある左端の部分を
クリックして三角が出ている状態です。その灰色のバー部分の
どこをどうクリックするかで画面上の並び順が変わります。)

この様に「シャッフルされたリストを作る」と言う機能なので、そのリスト内で
曲を前や後ろに飛ばしてもまた同じ部分では同じ順番で再生されます。
シャッフル機能を切って入れ直すか、最初の曲から前に飛ばしたり、
最後の曲を終わりまで再生したりすればシャッフルし直されます。

自分は普段まずシャッフル再生はしないので、今ちょっと試してみた
結果を見て回答したので、何か間違いがあるかもしれません。
0572デフォルトの名無しさん2010/01/24(日) 12:45:56
回答ありがとうございます。

iTunesと同じなのであれば、
「再生回数」という項目もあるから、これでも確認できますね。
全部再生回数が0回の状態で再生し、
しばらくしてから再生回数を見て、飛びぬけて再生回数が少ない・多いものが無いことを確認する。

iTunesではメニューの方の「シャッフル」をよく利用します。
(下にシャッフルボタンがあるのは知らなかった…)
確かにこれは「リピートする」にチェックを入れておかないと、一巡したところで終了するので私の望んでいるタイプです。

まぁ重要なのは本当にiTunesとiPodの再生方式が同じなのか、というところですが、
同じじゃない方が不自然ですよね。

ありがとうございました。
0573デフォルトの名無しさん2010/01/24(日) 12:47:04
iPodはiTunesを持ち歩く為に作られたものですから、基本はiTunesと同じだと思っていいと思いますよ。

コンピュータでのランダムは疑似乱数関数を利用しているのが一般的です。
疑似と頭に付くように実は完全なランダムではありません。与えるパラメーターが同じなら結果は全く同じになります。
実際の利用では、パラメーターに現在の時刻を1/100秒単位で指定します。
毎回再生ボタンをコンマ何秒の単位で全く同じく押すなんて事不可能ですから、同じ順番になることはなくランダムだと言って差し支えないでしょう。


> 同じ曲ばかりを繰り返します。
一般的にプログラム上では、順番は疑似乱数でランダムに決め、更に同じ曲が出ないようにする工夫もなされています。

実際にはランダムだけど、同じようなのを繰り返したり、次のが予想した通りだと思えるのは人間の特性が関係しています。
聞き流している時には好きな曲は印象が強く残りますが、そうではない曲は聴いても記憶に残りにくいものです。
ランダム再生していると、好きな曲ばかりが印象強く残って、前にも聴いたなとか、同じのばかりかかっているなと勘違いしてしまいます。

実際に聴いて確かめるのではなく、ランダム再生時の曲名を順番に書き出してみるとわかります。
聞き流していると錯覚してしまうし、時間もかかりますからね。

> A,C,E,A,C,E,...のように、同じ曲ばかりを繰り返します
そういうプログラムがされている可能性も否定はできませんが、錯覚である可能性もあります。
0574デフォルトの名無しさん2010/01/24(日) 12:48:00
回答ありがとうございます。

>> 同じ曲ばかりを繰り返します。
>一般的にプログラム上では、順番は疑似乱数でランダムに決め、更に同じ曲が出ないようにする工夫もなされています。
基本的にどのメーカーでも、ランダム再生のロジックは同じはずだ、という意味でしょうか。
そうだと良いのですが。
自分もほんの少しだけプログラミングには触ったことがあるので、
完全なランダム再生は難しくないのになんでこのMP3プレイヤーはこうなんだ!とか一人で憤慨しています。


>> A,C,E,A,C,E,...のように、同じ曲ばかりを繰り返します
>そういうプログラムがされている可能性も否定はできませんが、錯覚である可能性もあります。
確かめたわけじゃないので、確かに錯覚の可能性もあります。
それなのに言い張ったところで説得力は無いのですが、
「また同じ曲だ」「これはさっき聞いたばっかりだ」とか、曲単位で耳に残るのではなく、
曲Aがフェードアウトした後に始まるイントロは曲Cだ、という「つながり」が耳に残るんですよ。
そこから「いくつかの同じ曲を同じ順番で再生している」と思っています。
あくまで「思っている」です。

本題?のiPod購入は、前向きになっています。
0575デフォルトの名無しさん2010/01/24(日) 12:49:04
>>569
俺は>>560が書かれてた時点でスレ見てスルーして次見たのが今だけど、
560の時点じゃ同感だったよ。ちゃんと読んでればいずれかと書いてるから
言葉の使い方間違ってるわけではないとわかるけれど。

流し読みすると 1→2→3 と要求してるように見えて
ランダムって違うんじゃね?と思ったわな。

560=562だったとしても何も驚かんけどな。
0576デフォルトの名無しさん2010/01/24(日) 12:50:06
>・一度流した曲は、再生リスト内の曲を全て再生するまでは再生しない。

自分の経験上ではそうなっていると思います。
もちろん、電源が完全にオフになるとどこまで再生していたかはリセットされますが、少なくとも連続して聞いている時に同じリスト内の曲が再度かかることはないですね。
iTunesで曲を追加したり並び順を替えてもiPod側の再生順は変わりますし、1度PCに接続すると同じプレイリストを先頭から再生しても順番が変わっているように思います。

ただし、iPodやiTunesの「ランダム」というのは「万遍なく」という意味ではなく「目茶苦茶」という意味ですので、同じアーチストの曲が連続したりすることもあれば、プレイリスト内の次の曲がそのまま再生されたりもします。文字通り「目茶苦茶」です。
0577デフォルトの名無しさん2010/01/24(日) 16:39:24
ランダムフェチ?
0578デフォルトの名無しさん2010/01/24(日) 19:16:09
トラウマ?
0579デフォルトの名無しさん2010/01/25(月) 16:51:51
こんな感じで書かれてるテキストファイルがあるんだが。
↓
【現在】
C:\aaa/aaa/aaa.zip
C:\aaa/bbb/zzz.zip
C:\aaa/ccc/bbb.zip
 :
 :

パスで見ると並び順は正しい。
けど、このテキストをファイル名でソートしたい。

【希望順】
C:\aaa/aaa/aaa.zip
C:\aaa/ccc/bbb.zip
C:\aaa/bbb/zzz.zip
 :
 :

どうしてもバッチでやりたい変態です
バッチ単体じゃ無理かね
0580デフォルトの名無しさん2010/01/25(月) 17:15:47
以下のようなテキストファイルがあります。

C:/aaa/bbbb/cccccc.zip
C:/bbb/ddd/aaaa.zip
C:/ccc/eeeeee/bbb.zip

パス的に見れば並び順は正しいですが、
これをファイル名順に並び替えたいのです。

C:/bbb/ddd/aaaa.zip
C:/ccc/eeeeee/bbb.zip
C:/aaa/bbbb/cccccc.zip

どうしてもバッチ単体で処理したい変態です。
無理ですかね…
0581デフォルトの名無しさん2010/01/25(月) 19:32:21
del tmp?
for /f %%I in ('type hoge.txt') do echo %%~nxI?%%I>>tmp1
sort tmp1>tmp2
for /f "delims=? tokens=1*" %%I in ('type tmp2') do echo %%J>>tmp3
type tmp3
0582デフォルトの名無しさん2010/01/25(月) 19:52:02
setlocal enableextensions enabledelayedexpansion
del tmp.txt
for /f "delims=" %%i in (lstb.txt) do ( echo %%~nxi %%i>>tmp.txt )
del out.txt
for /f "tokens=1,* delims=:" %%i in ('sort tmp.txt') do (
set a=%%i
echo !a:~-1!:%%j>>out.txt
)
del tmp.txt
0583デフォルトの名無しさん2010/01/25(月) 20:48:04
一時ファイル使わんとでけんのか?
0584デフォルトの名無しさん2010/01/25(月) 21:22:56
>>581
%%~nxI ?%%I
とすればいいよ
もし<tab>が入力できれば
%%~nxI<tab>%%I
delims=<tab>
でもいいが難度が高いかな?
0585デフォルトの名無しさん2010/01/25(月) 22:12:16
>>584
?????
0586デフォルトの名無しさん2010/01/25(月) 23:12:59
sort順だろ
%%~nxI?%%I
だと数字が?より前になる
%%~nxI ?%%I
なら数字が より後ろになる
0587デフォルトの名無しさん2010/01/26(火) 00:51:04
そこまで考えてなかった
0588デフォルトの名無しさん2010/01/26(火) 02:28:17
ぶっ
0589デフォルトの名無しさん2010/01/26(火) 12:25:06
>>586
sortコマンドの並び替えはascii順じゃないので数字より前に?が来る。

タブもNG。ソート順ではスペースが前に来るんで、スペース入りのファイル名があると
おかしくなる。

多分sortでファイル名に出来ない文字で一番若いのは(0f)
区切り文字をこれにしたらとりあえずokみたい。
0590デフォルトの名無しさん2010/01/26(火) 12:28:24
書き込んだら文字消えたorz
コマンドプロンプト上ではアスタリスクみたいに見える文字(外字?)
0591デフォルトの名無しさん2010/01/26(火) 14:56:08
^a
二重線の「
が最初

cscript hoge.vbs|sort

for i=0 to 25
wscript.echo chr(i),i
next
for i=27 to 127
wscript.echo chr(i),i
next
0592デフォルトの名無しさん2010/01/26(火) 19:53:21
どっちもメモ帳で入力できない
0593デフォルトの名無しさん2010/01/26(火) 20:41:27
コマンドプロンプト上からecho ^A>>hoge.bat とか。
^AはCtrl+A
0594デフォルトの名無しさん2010/01/26(火) 22:06:24
メモ帳で入力できるものを使えば?
0595デフォルトの名無しさん2010/01/29(金) 18:36:32
ショートカット作ってアイコン変えると窓のアイコンが変わってくれるけど
バッチファイル中から自力でアイコン変える方法ってないですか?
フリーウェア等の外部ツールでもいいんですが。
0596デフォルトの名無しさん2010/01/31(日) 22:42:41
ある
0597デフォルトの名無しさん2010/01/31(日) 22:51:11
バッチファイル内で変数を保存?する方法について教えてください。
最初にパラメータとして渡されたファイル(例としてhogehoge.txtとします)を
INPUTFILE=%~dpnx1
としたあとで、
RENコマンドでインプットファイルをリネームしています。
例としてhagehage.txtに変更したとします。次に
CALL hogehoge.BAT "%INPUTFILE%"
を呼び出して戻ってきた後で
再度もとの名前に戻そうと
REN "hagehage.txt" "%INPUTFILE%"
とすると、%INPUTFILE%がhogehoge.txtから途中でリネームしたhagehage.txtに変わってしまっています。
どうにかリネームしてもhogehoge.txtを保持する方法は無いでしょうか。

バッチファイルは中間言語方式だったことを思い出してorz状態です。
0598デフォルトの名無しさん2010/01/31(日) 22:57:12
あほ
0599デフォルトの名無しさん2010/01/31(日) 23:10:23
>>597
無理して日本語を使わなくてもいいですよ。
BATでおk
0600デフォルトの名無しさん2010/01/31(日) 23:46:03
ほんじゃBATコピペ
最初に受け渡されたファイルネームはhogehoge.txtとします。
@ECHO ON
SET INPUT=%~dpnx1
SET INPUTPATH=%~dp1
SET INPUTFILE=%~nx1
REN "%INPUT%" "hagehage.txt"   REM ここでhagehage.txtにファイルネーム変更
CALL %EXECNAME% "c:\hagehage.txt"
REN "%INPUTPATH%hagehage.txt" "%INPUTFILE%" REM ここでhogehoge.txtに戻そうとしてもINPUTFILEにhagehage.txtが入ってる。

最後の%INPUTFILE%の中身がいつの間にか新ファイル名に変わってるので困っております。
0601デフォルトの名無しさん2010/01/31(日) 23:58:51
callした先で書き換えちゃってるんだろ
call先でsetlocal 〜 endlocalしとけ
0602デフォルトの名無しさん2010/02/01(月) 00:00:36
追記
call先のファイルをいじれないんだったらcallの呼び出しをsetlocal〜endlocalで囲む
0603デフォルトの名無しさん2010/02/01(月) 00:03:46
そうかcallの前後をsetlocal 〜 endlocalしとけ
0604デフォルトの名無しさん2010/02/01(月) 00:24:56
>>601
Danke.
0605デフォルトの名無しさん2010/02/01(月) 08:43:15
存在するファイルが無いと怒られるんだがなして?

IF EXIST %INPUTPATH%work.tmp tmpdel
IF EXIST %INPUTPATH%work.temp tempdel
ECHO %INPUTPATH%work.tmp %INPUTPATH%work.temp
echo そんなファイル無いんじゃゴルァ


これも試したけど駄目だった。
ファイルは絶対に存在する。
IF EXIST %INPUTPATH%work.tmp goto tmpdel
IF EXIST "%INPUTPATH%work.tmp" tmpdel
IF EXIST "%INPUTPATH%work.tmp" goto tmpdel
0606デフォルトの名無しさん2010/02/01(月) 11:12:49
%INPUTPATH%
が \ で終わっていないに 1000ガバス。

とりあえず
IF EXIST "%INPUTPATH%\work.tmp" goto tmpdel
じゃないか?
0607デフォルトの名無しさん2010/02/01(月) 11:22:30
606で終わってるけど質問する前に
echo onするなり
echo IF EXIST %INPUTPATH%work.tmp goto tmpdelするなりして
何をチェックしようとしてるのか確認しろ
0608デフォルトの名無しさん2010/02/01(月) 14:25:44
>>606
いや、\は付いてる
0609デフォルトの名無しさん2010/02/01(月) 14:59:02
>>598
0610デフォルトの名無しさん2010/02/01(月) 16:29:43
>>608
work.tmp が wark.tmp とか work,tmp なのが原因でファイルが存在しないに 1200カパズ。
for の中で遅延展開してない、に 1500ガバス。

そもそも 607 のアドバイスのように echo の結果はどうなのよ?
まさか、表示が流れて読めません、とかいう訳じゃないんでしょ?
0611デフォルトの名無しさん2010/02/01(月) 16:46:46
ここに書いた例と実際のバッチが全く別物とか。
0612デフォルトの名無しさん2010/02/01(月) 17:32:55
>>610
echoの結果も同じ。
なんでだろ?
0613デフォルトの名無しさん2010/02/01(月) 18:08:04
同じって言葉じゃなくて具体例を出せよw

実際に使ってる内容晒したらエラー出て当たり前って内容かもしれないだろ。
おまえさんがその当たり前に気付いてないだけで。
0614デフォルトの名無しさん2010/02/01(月) 19:52:01
そもそもバッチファイル理解できてる?
よければ問題が起こる最小限のコード全体を貼ってくれ
0615デフォルトの名無しさん2010/02/01(月) 21:30:59
delするのに存在確認は不要だろあほか
0616デフォルトの名無しさん2010/02/01(月) 22:11:39
カレントディレクトリから一つ下のサブディレクトリ名を取得する。
それを引数としてあるバッチに渡す。
以上を一つ下のサブディレクトリ全てについて実行するバッチって作れますか?
WSHの方が良いですか?
0617デフォルトの名無しさん2010/02/01(月) 22:41:36
>>613
試しに
ECHO "%INPUTPATH%hogehoge.txt"
としたら
C:\hogehoge.txt
と¥付きで表示される。
0618デフォルトの名無しさん2010/02/01(月) 23:51:27
ありぃ?
分かった。
直前で作ったファイルが書ききれていなかったっぽい。
TIMEOUT1秒入れたらEXISTで見えるようになった。
0619デフォルトの名無しさん2010/02/02(火) 01:13:03
>>616
for /d %%I in (*) do (
echo call exec.bat %%I
)
0620デフォルトの名無しさん2010/02/02(火) 01:33:15
>>619
すげぇ!こういとも簡単にできるとは…。
ありがとうございます。
0621デフォルトの名無しさん2010/02/02(火) 01:44:36
すまん。最後にもう一つだけ教えてください。

SET INPUT=%~dpnx1
ECHO %INPUT%
pause

これだけのバッチファイルを作って、このファイルに適当なファイルをD&Dしたら
ファイルネームがフルパスで表示されると思う。

でも、どこでもいいから適当なフォルダに長江 6380.txtってファイルを作って
さっきのバッチファイルにD&Dしてみてくれ。
長江で切れてしまうと思う。

これを回避するにはどうしたらいい?
0622デフォルトの名無しさん2010/02/02(火) 02:06:53
切れてないよ
0623デフォルトの名無しさん2010/02/02(火) 03:22:16
長江は長過ぎる 黄河にしとけ
0624デフォルトの名無しさん2010/02/02(火) 08:41:12
>>622
嘘お?
PC3台とも切れるんだが?
ちなみにスペースは全角な。

>>623
さぶぅ
0625デフォルトの名無しさん2010/02/02(火) 10:37:47
バッチファイルは全角半角スペース混じりのファイル名を正しく扱える(必要な時にちゃんと""で囲めば)。
そのコードで問題が出るなら明らかに呼び出し側の問題。
0626デフォルトの名無しさん2010/02/02(火) 12:24:52
>>625
試しにecho "%INPUT%"
をしても同じ
0627デフォルトの名無しさん2010/02/02(火) 12:32:11
>>621
普通なら切れない。

切れるとしたらbatファイルの関連付けでドロップハンドラが壊れているんだろう。
0628デフォルトの名無しさん2010/02/02(火) 15:12:55
こういう話だろ
http://scripting.cocolog-nifty.com/blog/2008/02/post_c740.html
0629デフォルトの名無しさん2010/02/02(火) 15:59:28
>>627
pgr
0630デフォルトの名無しさん2010/02/02(火) 16:36:56
>>621
半角で例示したりして芸の細かいこと
0631デフォルトの名無しさん2010/02/02(火) 19:55:37
バッチファイルにD&Dなんてするなよ
素直にコマンドプロンプトで打てばいいじゃん
0632デフォルトの名無しさん2010/02/02(火) 21:10:28
どこでもいいから適当なフォルダに長江&shutdown 6380.txtってファイルを作って
さっきのバッチファイルにD&Dしてみてくれ。
0633デフォルトの名無しさん2010/02/02(火) 23:39:00
>>628
ありがと。

>>631
長いバッチで自動化したいから無理なのら。

>>632
さぶぅ。
雪降らせたのお前か。
0634デフォルトの名無しさん2010/02/03(水) 02:14:36
バッチファイルにD&Dするかぎり無理なのら。
0635デフォルトの名無しさん2010/02/03(水) 02:42:21
ドロップハンドラ作ればええのら。
0636デフォルトの名無しさん2010/02/03(水) 14:35:34
Drop on Scriptのドロップハンドラは?
0637デフォルトの名無しさん2010/02/05(金) 14:35:40
累乗計算バッチだるす。
0638デフォルトの名無しさん2010/02/05(金) 21:19:53
2の3乗
3の3乗
0639デフォルトの名無しさん2010/02/07(日) 14:26:03
初歩的な質問ですみません。とてつもなく初心者です。

kaigi_20100205.txt
kaigi20100206,txt
20100207kaigi.txt
のようなファイルをrenでリネームさせて、

会議_20100205.txt
会議_20100206.txt
会議_20100207.txt
のように統一させたいと思い、
色々と見よう見真似で
rename.datファイルに

ren kaigi*.txt 会議_*.txt
ren *kaigi.txt 会議_*.txt
といれてみたのですが、

会議_00207kaigi.txt
会議_gi20100206.txt
会議_gi_20100205.txt
という状態になってしまいました。
これは自分のワイルドカードの使い方が根本的に間違っているのでしょうか?
どなたかご教授お願いいたします。
0640デフォルトの名無しさん2010/02/07(日) 15:23:12
ワイルドカードはファイル名を保持してない
0641デフォルトの名無しさん2010/02/07(日) 16:48:59
「kaigi_*.txt」にマッチしたファイル名を「会議_*.txt」がマッチするように書き換えるのであって、
「会議_(kaigi_*.txtの*に相当する部分文字列).txt」というようにはならない。
そしてdosには「*に相当する部分文字列」を取得する機能はないので、
setなどを利用して、自分で作ってやらなければならない。
例えばこんなふうに:

@echo off
setlocal
set NAME1=%~n1
set NAME2=%NAME1:_=%
if "%NAME1:~0,5%" == "kaigi" (
    echo 会議_%NAME2:~5%.txt
) else if "%NAME1:~-5%" == "kaigi" (
    echo 会議_%NAME2:~0,-5%.txt
)
0642デフォルトの名無しさん2010/02/07(日) 17:33:56
@echo off
for %%i in (kaigi*.txt) do (
set NAME=%%i
call ren %%i %%NAME:kaigi=会議_%%
)
for %%i in (*kaigi.txt) do (
set NAME=%%i
call ren %%i 会議_%%NAME:kaigi=%%
)
0643デフォルトの名無しさん2010/02/07(日) 19:24:58
setlocal enabledelayedexpansion
for /f %%I in ('dir /b *kaigi*.txt') do @(set a=%%I
set a=!a:kaigi=!
set a=!a:_=!
ren %%I 会議_!a!)
0644デフォルトの名無しさん2010/02/07(日) 19:44:18
>640-643
みなさん、ありがとうございます!
試してみましたところ、ばっちり動作しました。
ただ、ばっちり動作しますがプログラムの挙動を自身がまだ理解できてない状態なので
これらを元に色々調べてプログラムを練ってみたいと思います。
0645デフォルトの名無しさん2010/02/10(水) 00:23:41
5スレ目でいうのもなんか変だが、

コマンド シェルの概要
http://technet.microsoft.com/ja-jp/library/cc737438(WS.10).aspx

Windowsヘルプにもあるし、OSごとにリンク先違うけど、ここらへんがテンプレにあっても良くないか?

コマンド ライン リファレンス
http://technet.microsoft.com/ja-jp/library/cc778084(WS.10).aspx
バッチ ファイルを使用する
http://technet.microsoft.com/ja-jp/library/cc758944(WS.10).aspx
こっちは、上からリンクあるからイランと思うけど。
0646デフォルトの名無しさん2010/02/10(水) 00:24:35
コマンド シェルの概要
http://technet.microsoft.com/ja-jp/library/cc778084.aspx

アチャー
0647デフォルトの名無しさん2010/02/10(水) 00:25:38
orz
0648デフォルトの名無しさん2010/02/10(水) 09:53:38
自分の使ってるOSのヘルプならいつでも見れるはずだが、
ヘルプすら読まずに質問するやつが多すぎるという嫌味?
0649デフォルトの名無しさん2010/02/10(水) 13:59:37
>>646
Runasなんてあったのかー
0650デフォルトの名無しさん2010/02/10(水) 15:52:52
MSのヘルプは探すのが面倒
0651デフォルトの名無しさん2010/02/10(水) 16:15:51
ヘルプより掲示板で聞いた方が早いし楽
0652デフォルトの名無しさん2010/02/12(金) 01:00:53
WindowsXPのコンソールで、
unixでいうところのsmbclientを使うには、
どのようにしたらよいでしょう?
smbはもともとWindowsのプロトコルで、GUIに統合されているため、
smbclientのコマンドラインプログラムというのがあるのかないのか、
よくわからないのですが、
パスワードつきの他のマシンに起動時に自動接続するのに、
ネットワークドライブに割り当てただけではだめだったので、
それならコンソールでコマンドを実行して接続するか、と考えました。
ご存じでしたらアドバイスをお願いします。
0653デフォルトの名無しさん2010/02/12(金) 01:04:43
net
0654デフォルトの名無しさん2010/02/12(金) 01:21:50
>>653
thanks
0655デフォルトの名無しさん2010/02/14(日) 03:13:43
MSのヘルプは詳しいのと詳しくないのと差があるからな
makecabとかまったくわからんしfsutilとか独自すぎて笑える
cmdのヘルプもわかりにくい部類になるだろう
書いてあるのかないのかよくわからんことも多いし

掲示板のほうが楽しいとかはさすがにあれだがw
0656デフォルトの名無しさん2010/02/14(日) 21:54:55
あのさあ...
objShell.Run "コマンド1 | コマンド2 | sort"
とかをスクリプトでするとしましょう。
そのとき、途中のコマンドが
.vbs とか .wsf の//job:XXX として、
そのなかに Wscript.Sleep 100 があるとパイプラインが詰まる?
ことないですか?
0657デフォルトの名無しさん2010/02/14(日) 22:37:57
それ詰まるもなにもパイプラインにならんだろ?
0658デフォルトの名無しさん2010/02/14(日) 22:48:45
えー...。 ごめーん
コマンド1 とかは
Cscript //nologo XXX.vbs で、
XXX.vbs や YYY.wsf //job:ZZZ 内部では
Wscript.Echo とか Wscript.StdOut.WriteLine 使用

ではどうだろう。
あげたれ
0659デフォルトの名無しさん2010/02/14(日) 23:07:30
コマンド1がパイプラインの機能を持ってるのか?という話だが?
cmd /cならパイプラインの機能を持ってるが?
0660デフォルトの名無しさん2010/02/14(日) 23:29:58
あああ、そのとおり
objShell.Run "cmd.exe /c " & "コマンド1 | " & ...
でした。

で、コマンド1にWscript.Sleep 100 があるとコマンド1で止まっちゃうような。
気がするのです
0661デフォルトの名無しさん2010/02/15(月) 00:09:24
ないです
0662デフォルトの名無しさん2010/02/15(月) 21:36:31
ないですね。はてな
0663デフォルトの名無しさん2010/02/16(火) 13:52:42
教えてください。

set AAA=D:\WORK

set FOLDER=%1
set INFNAME=%2
set OUTFNAME=%3

set INFPASS=%FOLDER%\%INFNAME%
set OUTFPASS=%FOLDER%\%OUTFNAME%

copy %INFPASS% %OUTFPASS%

で、%1に「AAA」を渡した場合に、FOLDERに%AAA%が設定され、
結果的に%FOLDER% が D:\WORK となる事は可能ですか?
0664デフォルトの名無しさん2010/02/16(火) 14:29:10
>>663
こんな感じかな?
× set FOLDER=%1
○ call set FOLDER=%%%1%%
0665デフォルトの名無しさん2010/02/16(火) 18:01:21
>>664
できました。ありがとうございました。
0666デフォルトの名無しさん2010/02/27(土) 11:20:25
質問させてください。
パソコンちょっと詳しいからということで、会社の
ネットワーク管理者にされてしまいました。
運の悪いことに、次年度からパソコンの更新が行われ、
Windows XP→Windows 7にOSも変更になりました。
前任の人がWindows XP環境でログインしたときに、
仕事でよく使うフォルダへのショートカットを
ログイン時のバッチファイルで表示させていたのですが、
Windows 7では動作しないみたいなのですorz
Windows 7でバッチファイルでファイルのショートカットを
デスクトップに表示させるにはどうしたらいいでしょうか?
いろいろググッてみましたが、それ用のフリーソフトが
あるみたいなのですが、Windows 7では動きそうにないんです...
0667デフォルトの名無しさん2010/02/27(土) 13:05:03
http://pc12.2ch.net/test/read.cgi/win/1243134619/
管理者スレ
0668デフォルトの名無しさん2010/02/27(土) 13:08:37
回答させてください
>ログイン時のバッチファイルで表示させていたのですが、
>Windows 7では動作しないみたいなのですorz
動作するかしないかはっきりさせろ!
実行してみりゃどういうエラーが出てるかわかるだろ?
0669デフォルトの名無しさん2010/02/27(土) 13:23:23
>>668
前任の人の設定のままでXPのマシンをログインすると
ちゃんとショートカットでるのですが、7だと、
エラーメッセージも出ず、スルー状態なんです。
(つまり何もおきない)
他のソフトインストールして試して見ます。
このスレの人で、ショートカット表示
させるコマンドライン知っている人い
ましたら、ご教示ください。
おながいしまつ。
0670デフォルトの名無しさん2010/02/27(土) 14:29:35
ドメインへのログオンスクリプトならポリシーの適用してない/できてないとか。
そもそもhomeでドメインに参加できないとか。
ショートカット表示の意味がわからない。
エクスプローラ上で表示させる事なのか、リモート資源の接続先をポップアップさせる事なのか。
とにかく5W1Hで明確に書いてくれないと全くわかんね。
0671デフォルトの名無しさん2010/02/27(土) 15:20:16
>>670 多分668さんも同一人物
とても親切にしていただいてありがとうございます。
前の設定者はドメインに参加する時点で、windows 2003 server
のActive Direcrory処理の際に、ログオンするときのバッチファイルに
デスクトップにショートカットを表示させるようにしてたみたいです。
というのも、管理者以外はディレクトリ構造も知らないので、
それを全員に分からせてセキュリティレベルを下げるより、
自動的にショートカットを表示してクリックさせるという形に
したようです。確かにパスを追っていけばそのファイルに到達しますが、
わざとそうさせないみたいです。(その方針には私も賛成します)
長文すみません。
0672デフォルトの名無しさん2010/02/27(土) 15:22:13
で、デスクトップへ通常使うけど、
パスを探られたくないフォルダへの
ショートカットを入れたいということです。
パソコンしかさわったことないので、
こういう具体的かつ実践的なご指摘はとても
勉強になります。ありがとうございます。
0673デフォルトの名無しさん2010/02/27(土) 17:01:32
ポリシー設定のなかにもデスクトップの表示に関する項目があった気がする
このスレ的にはログオンスクリプトの中でNET USEで接続しているんだろうな位・・・もしかするとSUBST?
0674デフォルトの名無しさん2010/02/27(土) 17:24:57
ありがとうございます。
明日は日曜ですが、隠れ出社して試してみます。
0675デフォルトの名無しさん2010/02/27(土) 19:12:15
バッチからショートカットを作るのはむずかしかろ
インターネットショートカットならかんたん
(
echo;[InternetShortcut]
echo;URL=\\server\sharename\folder
) > desktop\hoge.url
0676デフォルトの名無しさん2010/02/27(土) 19:34:54
どういう風に作ってたかしらんけど、フォルダ構造が変わったからじゃないの?
大抵は新しいパスへリダイレクトしてくれるけど、AllUsers→Publicの部分はうまくいかない模様

XP以前:C:\Documents and Settings\All Users\Desktop
Vista以降:C:\Users\Public\Desktop
0677デフォルトの名無しさん2010/02/27(土) 20:15:31
>>676
さすがに会社のサーバ?でユーサフォルダ以降のフォルダ使わないだろw
まさか、な・・・?
0678デフォルトの名無しさん2010/02/28(日) 00:15:40
>>675-677
ヒントありがとうございます。
まさかもありえるのでちょっとやってみます。
0679デフォルトの名無しさん2010/02/28(日) 05:55:24
規模にもよるけど引継ぎ書とか運用手順書とか必要でしょ。
次の人に渡すにしても。
前任者に要求しとかないとまずいね。
0680デフォルトの名無しさん2010/02/28(日) 12:55:36
「ログオンするときのバッチファイル」を、クライアントのWindows7マシン上にコピーして
コマンドラインから実行してみたらエラー内容が分かるんじゃない?
0681デフォルトの名無しさん2010/02/28(日) 18:47:20
みなさんありがとうございます。
バッチファイルが別のバッチファイル呼び出すような
入れ子構造になっていることが判明し、解析に手間取ってます
というか、そもそもDOSのコマンド知らないorz
一から調べていますので少々時間くださいまし。
0682デフォルトの名無しさん2010/03/03(水) 19:37:11
みなさんヒントありがとうございました。
2ch落ちたので、その間にいろいろ調べて
見ました。問題が2点あって、一つが
>>676 さんのご指摘に近く、
Xp「デスクトップ」→7「Desktop」
Xp「NetHood」→7「AppData\Roaming\Microsoft\Windows\Network Shortcuts」
Xp「スタート メニュー\プログラム」→「Microsoft\Windows\Start Menu\Programs」
に書き換えるのと、
>>670 673 さんのご指摘に近く、
Xpだとアクセス権のないフォルダ内の実行ファイルも実行できていた
のが、7だとアクセス権がないフォルダのファイルはスルーされること
が問題で、それらを訂正したら何とか動いてガッツですた。
(3日かかりますた。)

ちなみに、それで0からDOSコマンド勉強始めたのですが、
前任者は、ショートカットをアクセスされてもいいフォルダにつくって
そのショートカット自体をファイルとしてコピーするということで
ショートカットの自動表示をしていました。
大変勉強になりました。また、機会がございましたら、
質問させていただければ幸いです。
(ここから後は管理者スレの内容になりそうなので、
純粋にバッチファイルに関する内容の時にまた来ます。)

ありがとうございました。
0683デフォルトの名無しさん2010/03/03(水) 22:56:17
cmdでlinuxの mkfifo hoge 的なことってできますか?
0684デフォルトの名無しさん2010/03/04(木) 00:20:27
普通のファイルで1 writer n readerができるが?
0685デフォルトの名無しさん2010/03/04(木) 21:13:13
CreateNamedPipe()で作れば?
0686デフォルトの名無しさん2010/03/07(日) 19:34:58
Jドライブの直下のlhacaフォルダの下にLhaca.exeという圧縮ファイルがあります
それをつかってJドライブ直下にあるaaaフォルダを圧縮してデスクトップに出力させたいのですが
どうもうまくいきません
どこが悪いかを教えてください

cd J:\lhaca
Lhaca.exe temp.zip J:\aaa
0687デフォルトの名無しさん2010/03/07(日) 23:14:06
もしカレントドライブがC:の場合はcdでJ:\lhacaを指定しても
そのあと j: でカレントドライブを変更しないと相対でlhaca.exeを入力したら
カレントドライブ(C:\)のカレントディレクトリでlhaca.exe探しちゃうけどそこは大丈夫?
もしそれが問題なら

j:
cd J:\lhaca
Lhaca.exe temp.zip J:\aaa

にすべき。これで違ったらそれはLhaca.exeの問題かも
0688デフォルトの名無しさん2010/03/07(日) 23:28:57
有り難うございます
既にカレントドライブはJになっています。
Lhacaは普通に手で実行すると普通に開くのですが
Dosコマンドで開こうとするとどうしてもエラーになります
0689デフォルトの名無しさん2010/03/08(月) 00:10:36
>>688
詳しいエラー教えて
0690デフォルトの名無しさん2010/03/08(月) 02:30:59
+Lhaca 0.76 を落として試してみたけど
Windows7 x64で実行するとファイル名バグるな
(Lhaca.exe temp.zip readme.txt だと「(」名の空フォルダができるだけ
 Lhaca.exe .\temp.zip .\readme.txt とすると圧縮はできるけど「(.zip」という名前になる)
デラックス版(1.24)も試してみたが、こちらは空フォルダすら作れなかった

そもそもマニュアルにコマンドライン引数について何の記述もないし、サポート外の機能のようだ
7-Zipとかコマンドラインに正式に対応してるアーカイバ使った方がいいんでない?
0691デフォルトの名無しさん2010/03/08(月) 02:52:16
>>690
そうそう。俺もWindows7 x64 だが同じ状況。
Lhaca.exe temp.zip J:\aaa の temp.zipが問題だねえ
これを抜いて Lhaca.exe J:\aaa で圧縮するとaaa.zipで圧縮されるから
圧縮ファイルの名前=圧縮するファイルまたはフォルダ だね
そもそもzipで圧縮されずにlzhで圧縮されるようだ

もしJ:\aaaのフォルダをtemp.lzhにしたいなら

ren %2 %1
Lhaca.exe %1
ren %1 %2

上記のコマンドをLhaca.bat かなんかに保存してLhaca.exeと同じフォルダに置き、
Lhaca.bat temp aaa 
と入力すればデスクトップにtemp.lzhが作成される。
問題点は解凍した時にtempというフォルダになってしまう事か。
圧縮ファイルをrenできればいいけどデスクトップに圧縮されるからOSの関係上、
XPだと デスクトップ   vista/7 だと Desktop になって環境によってリネームできない。

結局は>>690が言っているように別のアーカイバ使った方が良いよってこと。
0692デフォルトの名無しさん2010/03/08(月) 03:44:39
文字を入力させて、その文字でファイル名を判断して該当のフォルダに移動するバッチプログラムは需要ある?
別の言語では時々見るんだけどコマンドプロンプトでやってるの見たことないからさ

http://blog-imgs-42.fc2.com/s/h/t/shtpg/fri.txt
0693デフォルトの名無しさん2010/03/08(月) 03:57:06
>>691
圧縮形式や作成先はLhaca自体の設定(レジストリ)に依存するようだよ
Lhacaはコマンドラインで使わないほうがいいな
06946932010/03/08(月) 04:00:46
と思ったらレジストリじゃなくて
"C:\Windows\Lhaca.ini"
なんてのが勝手に作成されてた

行儀が悪すぎる!
0695デフォルトの名無しさん2010/03/08(月) 08:24:06
>>686
↓横レスだが、ZIP形式の代わりにLZH形式で圧縮するなら、この二つを併用して…
ttp://www.vector.co.jp/soft/win95/util/se028209.html
ttp://www.vector.co.jp/soft/win95/util/se020193.html
↓
例えばWindowsXPの場合、"Lha32.exe"が"C:\WINDOWS"フォルダ直下またはカレントフォルダ、
"UNLHA32.DLL"が"C:\WINDOWS\SYSTEM32"フォルダ直下または"Lha32.exe"と同じフォルダに
存在する状態で、以下のコマンドラインを打ち込めばOKなんだけどね。

LHA32 A /D1 "%USERPROFILE%\デスクトップ\macros.lzh" "J:\aaa\*"
0696デフォルトの名無しさん2010/03/08(月) 08:33:40
>695をちょっと訂正。
macros.lzh → aaa.lzh

いずれにせよ"%USERPROFILE%\デスクトップ\"を指定するのがポイント。
ただし「窓の手」などでデスクトップのフォルダを任意のフォルダに変えてる場合、この手段は使えない。
0697デフォルトの名無しさん2010/03/08(月) 23:24:41
>>691
バッチというかコマンドラインでやっても問題ない
アーカイバってどんなのがあるの?

一見しただけじゃわからないからな
0698デフォルトの名無しさん2010/03/09(火) 01:03:50
有名どころならWinRARとか7zipでもできるよ
0699デフォルトの名無しさん2010/03/09(火) 01:31:57
コマンドラインならundll.exe使っとけ。統合アーカイバDLLならどれでもおk。
07006932010/03/09(火) 01:48:24
圧縮できればいいのなら makecab という手もある
0701デフォルトの名無しさん2010/03/09(火) 02:27:44
C:\Program Files\Windows Resource Kits\Tools\compress.exe /?
Syntax:
COMPRESS [-R] [-D] [-S] [ -Z | -ZX ] Source Destination
COMPRESS -R [-D] [-S] [ -Z | -ZX ] Source [Destination]
Description:
Compresses one or more files.
Parameter List:
-R Rename compressed files.
-D Update compressed files only if out of date.
-S Suppress copyright information.
-ZX LZX compression. This is default compression.
-Z MS-ZIP compression.
Source Source file specification. Wildcards may be
used.
Destination Destination file | path specification.
Destination may be a directory. If Source is
multiple files and -r is not specified,
Destination must be a directory.
Examples:
COMPRESS temp.txt compressed.txt
COMPRESS -R *.*
COMPRESS -R *.exe *.dll compressed_dir
0702デフォルトの名無しさん2010/03/09(火) 15:34:51
CMDで↓の様なトランザクション処理はどのように記述すればよいのでしょうか?
これがないと怖くて処理が書けないのですが。

PowerShell 2.0の新機能(5) ――トランザクション編(1/3):CodeZine
http://codezine.jp/article/detail/4944
0703デフォルトの名無しさん2010/03/09(火) 16:31:12
@echo off
powershell syori.ps1
0704デフォルトの名無しさん2010/03/09(火) 17:02:59
Parameter List:
-R Rename compressed files.
-D Update compressed files only if out of date.
-S Suppress copyright information.
-ZX LZX compression. This is default compression.
-Z MS-ZIP compression.
Source Source file specification. Wildcards may be
0705デフォルトの名無しさん2010/03/09(火) 17:13:21
図解入門 よくわかる最新データ圧縮技術の基本と仕組み
―情報圧縮技術とアルゴリズムの基礎講座
How‐nual Visual Guide Book

圧縮アルゴリズム―符号化の原理とC言語による実装 C magazine
0706デフォルトの名無しさん2010/03/17(水) 12:10:47
Windows Vistaのバッチファイルについて質問です。
EXEの起動でパラメータを渡す際スペースがあるものは""
で囲むと思っていたのですが
test.exe "C:\Dir 1\"
とすると最後の\が消えて
C:\Dir 1"
として受け取ってしまうようでした
試しにVCで__argvを確認してもそうなっているようでしたが
どんな書式規則でこうなるんでしょうか?


0707デフォルトの名無しさん2010/03/17(水) 12:19:37
そういやウチのWinXP(SP3)では以下のようにVBScriptファイルを起動すると、
ちゃんと"C:\Dir 1\"と受け取ってくれたよ。
確かWin95/98/Me/NT/2000でも同じ挙動だったはず。

test.vbs "C:\Dir 1\"
0708デフォルトの名無しさん2010/03/17(水) 12:30:02
>>707
確認してみましたが、確かにVBSだときちんと受け取ってますね・・。
理由は気になりますが、書式として間違っていたわけではないと
わかっただけで大収穫です。
ありがとう。
0709デフォルトの名無しさん2010/03/17(水) 14:19:30
>>706
test.exe "a b c d"の中に"を入れるときは、\"でエスケープするだよ
test.exe "a \"b c\" d"
0710デフォルトの名無しさん2010/03/17(水) 19:29:21
>>709
おお!なるほど!エスケープを使えたとは知りませんでした。
すっきり解決しました。ありがとう。

0711デフォルトの名無しさん2010/03/17(水) 20:03:53
exeによって解釈は違うから永久にすっきりしないよ。
0712デフォルトの名無しさん2010/03/17(水) 23:08:07
某コマンドラインツールのリスト形式の標準出力を
某コマンド 某オプション | findstr /b /e /c:"hoge foo %fuga%"
のような書き方で完全一致検索したいのですが、
リスト形式の標準出力がLF改行となっているらしく
(パイプの代わりにリダイレクトして確認)、
findstrコマンドの/eオプションが期待通りに動作しません
(/eオプションはCRLF改行しか認識しない?)

/rオプションの正規表現モードで\nや\x0Aが使えればいいのですが、
findstrの正規表現は貧弱で使えず、$もLF改行にはマッチしないようです。

VBやVBScriptで使える「VBLF」のようなLF改行を示す定数か、
Chr(10)のような文字コード指定でLF改行を明示する手段は、
MS-DOSバッチファイルにはないのでしょうか?
環境はWinXP Pro SP3です。
0713デフォルトの名無しさん2010/03/17(水) 23:12:40
某コマンド 某オプション | more | findstr /b /e /c:"hoge foo %fuga%"
0714デフォルトの名無しさん2010/03/17(水) 23:27:56
/x
0715デフォルトの名無しさん2010/03/18(木) 01:51:47
動画ファイルだけどシステム属性が付いてるファイルがあります。
ググったところ、コマンドプロンプトから「attrib ドライブ名:\ファイル名.拡張子 -s」で解除できることがわかりました。
いちいちコマンドプロンプトからやらないで、バッチファイルを作って、それを実行することで解除するようにするにはどういう記述を書けばいいのでしょう。
0716デフォルトの名無しさん2010/03/18(木) 02:19:01
つ http://pc12.2ch.net/test/read.cgi/software/1265545912/
0717デフォルトの名無しさん2010/03/18(木) 10:01:26
>715
@echo off
attrib ドライブ名:\ファイル名.拡張子 -s
0718デフォルトの名無しさん2010/03/18(木) 10:12:28
>>711
Windowsのコマンドで、きえる、\"以外の例を挙げてみろよ
0719デフォルトの名無しさん2010/03/18(木) 10:54:37
"C:\Program Files\Internet Explorer\iexplore.exe" "http://www.ya\"hoo.com"
0720デフォルトの名無しさん2010/03/18(木) 17:42:01
無理すんな
0721デフォルトの名無しさん2010/03/18(木) 19:20:51
http://msdn.microsoft.com/ja-jp/library/cc429051.aspx
CommandLineToArgvW 関数
対応情報
Windows NT: バージョン 3.5 以降を使います。
Windows: サポートされていません。
Windows CE: サポートされていません。


別に無理していないけど、Windowsでサポートされていない関数の挙動を
Windows標準とみなすのはどうかと思うわけよ。
実際いろいろなexeがそれぞれ好き勝手に解釈しているし。
0722デフォルトの名無しさん2010/03/18(木) 19:55:53
そんな便利なものがあったのか
0723デフォルトの名無しさん2010/03/18(木) 20:56:58
NT標準でいいが 9xとかいらね
0724デフォルトの名無しさん2010/03/18(木) 22:29:59
9xは__argv、NTはCommandLineToArgvW
0725デフォルトの名無しさん2010/03/19(金) 17:12:30
>>721
無理すんな
0726デフォルトの名無しさん2010/03/20(土) 16:59:48
環境変数のuserpartってなに?
0727JGSDF2010/03/21(日) 00:49:25
syosinsya
0728JGSDF2010/03/21(日) 00:51:01
cmd
07297122010/03/21(日) 13:59:48
>>713
moreコマンドでは某コマンドの出力行が長くなった時に問題あるかと思い、
find -v ""にて標準出力を無条件にfindする方法にて対応しました。
ですが、LF改行の出力が別のコマンドでフィルタすることによって、
CRLF改行に変換できるというのが大変参考になり、どうもありがとうございました。

>>714
/xオプションなら/bと/eを併用しなくてもよかったのですね
ヘルプやオンラインマニュアルで印刷やプリントといったキーワードが使われていたため、
完全一致検索のことを指していると気づいていませんでした。
マイクロソフトの翻訳は微妙なことも多いので、英語版サイトもこれからは見るようにします。
どうもありがとうございました。
07307122010/03/22(月) 08:36:22
引数%1がフォルダだった場合とファイルだった場合で
処理分岐するバッチファイルを作成したいのですが、
修飾子%~a1で取得できる属性には、ディレクトリとファイルを区別する
属性がなく、困っています。
07317302010/03/22(月) 11:28:45
OSはWindows Server 2003です。
書き忘れていました.
0732デフォルトの名無しさん2010/03/22(月) 12:55:32
あるけど?
07337302010/03/22(月) 13:17:56
>>732
どうすればよいか教えて頂けませんか?
0734デフォルトの名無しさん2010/03/22(月) 17:13:34
dirかcd
0735デフォルトの名無しさん2010/03/22(月) 17:25:02
if exist dirname\con echo dir
0736デフォルトの名無しさん2010/03/22(月) 18:17:09
cd foo && echo succ || echo fail
0737デフォルトの名無しさん2010/03/22(月) 21:26:33
FOR /F "eol=-" IN ("%~a1") DO ECHO FOLDR
FOR /F "eol=d" IN ("%~a1") DO ECHO FILE
0738デフォルトの名無しさん2010/03/22(月) 21:46:12
OS:Windows2003 server,WindowsXP
複数のCSVファイル(yyyymmdd_hhmmss.csvのフォーマット)
をmoreコマンドでひとつのcsvファイルにマージする際、
プライマリキーにおいて重複するレコードを最新のレコード以外
削除するほうほうってないですかね。
バッチ単体で。
0739デフォルトの名無しさん2010/03/22(月) 22:14:40
ない
0740デフォルトの名無しさん2010/03/22(月) 22:40:00
dir /ad /b "%~dp1" | findstr /x "%~nx1" && echo foruda
0741デフォルトの名無しさん2010/03/23(火) 18:37:03
>>736
cdが変わるからやだ
0742デフォルトの名無しさん2010/03/23(火) 19:01:51
>>735
"dir name"だと駄目やんけ
0743デフォルトの名無しさん2010/03/23(火) 20:29:25
cd "c:\System Volume Information" && echo succ || echo fail
0744デフォルトの名無しさん2010/03/23(火) 20:34:37
>>741
pushd&popd使えよ
0745デフォルトの名無しさん2010/03/23(火) 22:45:39
つcmd /c cd
0746デフォルトの名無しさん2010/03/24(水) 23:35:07
バッチ内でwmic process get や wmic ntevent を使用して、結果をテキストファイルに出力しようとしています。
ここで、wmicの出力がUnicode、別のリダイレクト部分(START、ENDなどのコメント)がSJISで出力されてしまいます。
wmicの出力をSJIS(CR+LF)にする方法はありますでしょうか。
0747デフォルトの名無しさん2010/03/25(木) 01:01:55
ttp://scripting.cocolog-nifty.com/blog/2009/09/wmic-6efe.html
0748デフォルトの名無しさん2010/03/25(木) 19:05:39
>別のリダイレクト部分(START、ENDなどのコメント)がSJISで出力されてしまいます。
これをunicodeで出せばよい
0749デフォルトの名無しさん2010/03/26(金) 00:35:26
>>740
rootに使えん
0750デフォルトの名無しさん2010/03/27(土) 00:31:19
>>742
if existはどうやっても駄目だな
0751デフォルトの名無しさん2010/03/27(土) 00:43:39
if exist "dir name\*" は?
0752デフォルトの名無しさん2010/03/27(土) 01:51:37
オラも考えてみた。

if exist "%~1" (
dir /a:d "%~1" 1>nul 2>&1
if errorlevel 2 goto nazo
if errorlevel 1 goto fileeee
if errorlevel 0 goto dirrrrr
) else (
echo "%~1" が無いよ?
goto naiyo
)

優雅さに欠けるし、= でダメだ... orz

ふと思ったのは %1 を渡された時にたとえば aaa と aaa========== を見分けるにはどーすりゃいいんだ?
0753デフォルトの名無しさん2010/03/27(土) 02:11:47
pushd %1&&popd
echo %errorlevel%
0754デフォルトの名無しさん2010/03/27(土) 07:01:38
>>752
>ふと思ったのは %1 を渡された時にたとえば aaa と aaa========== を見分けるにはどーすりゃいいんだ?
ヒント:findstr /x
0755デフォルトの名無しさん2010/03/27(土) 09:22:25
>>754
findstr をしようにも、たとえば
echo %1
というバッチファイル test.bat で
test.bat aaa と test.bat aaa===== でどちらも aaa となって末尾の = が拾えない
のを「見分けるにはどーすりゃいいんだ?」と思ったんですが。
オレ何か勘違いしてる?
0756デフォルトの名無しさん2010/03/27(土) 14:29:01
>>751
あまいな .もない、空のフォルダってぇのがあるのだ
>>752 >>753
アクセス権がないフォルダはファイルなのか
>>755
別の話を絡めるな
test.bat "aaa====="
0757デフォルトの名無しさん2010/03/27(土) 14:35:30
厳密にやりたきゃ別の言語使えよ。もう質問してる奴もいないし秋田。
0758デフォルトの名無しさん2010/03/27(土) 15:56:47
別の言語使いたけりゃ他スレへ行けよ
0759デフォルトの名無しさん2010/03/27(土) 17:34:27
厳密にやりたきゃ%~a1を使えばよいだけの話
0760デフォルトの名無しさん2010/03/28(日) 17:31:02
あるソフトウェアのバージョン違いが3つほど入ってるんだけど
デスクトップに同じ見た目のアイコンが3つあるからややこしくて。
バッチファイルをクリックすると上下ボタンでどのソフトを起動するか
選択できて、エンター押すと実行っていうのを作りたいんだけど
誰か作ってくんない?
イメージ的にはウィンドウズをセーフモードで起動したときに
選択する画面がまずでてくるんだけどあんな感じ☆
0761デフォルトの名無しさん2010/03/28(日) 17:56:46
アイコン変えればいいじゃん
0762デフォルトの名無しさん2010/03/28(日) 18:03:24
デスクトップに3つあるアイコンそれぞれに
異なるショートカットキーを指定すればいいじゃん
07637602010/03/28(日) 18:25:55
こんな感じのを作ってみたんだけど
やっぱり上下のキーで選択するUIがいいなぁと思うので
誰か改造求む!

@echo off
echo アプリケーションを選択して下さい
echo [1] : メモ帳
echo [2] : ペイント
echo [3] : 電卓

set /p INPUT=
if "%INPUT%"=="1" start notepad
if "%INPUT%"=="2" start mspaint
if "%INPUT%"=="3" start calc

0764デフォルトの名無しさん2010/03/28(日) 19:38:46
Enterなしにキー入力を受け取る方法がないから無理
0765デフォルトの名無しさん2010/03/28(日) 19:47:41
指定したファイルをホームページ(FTPで)にバッチファイルで送信することは可能でしょうか?
0766デフォルトの名無しさん2010/03/28(日) 19:59:09
@echo off
echo アプリケーションを選択して下さい
echo [1] : メモ帳
echo [2] : ペイント
echo [3] : 電卓

choice /c 123
if "%ERRORLEVEL%"=="1" start notepad
if "%ERRORLEVEL%"=="2" start mspaint
if "%ERRORLEVEL%"=="3" start calc
0767デフォルトの名無しさん2010/03/28(日) 20:17:58
if 1==2 (
start notepad
start mspaint
start calc
)
↑
0768デフォルトの名無しさん2010/03/28(日) 21:11:49
大昔はそういうメニューが普通にあったが、GUIで死滅したな
あってもブート選択画面ぐらいか
0769デフォルトの名無しさん2010/03/28(日) 21:15:15
1文字読み取って制御を返すツール作ればいろいろ用途が広がるよ。
2ストロークで26^2個のツール呼び出せるランチャ作ったけど軽くて便利。
0770デフォルトの名無しさん2010/03/28(日) 22:05:34
powershell使えばカーソル選択メニューが作れるよ
0771デフォルトの名無しさん2010/03/28(日) 22:32:52
>>765
できるよ
バッチファイルとまた一つftpコマンドを書いたテキストファイルが必要になる
0772デフォルトの名無しさん2010/03/29(月) 13:10:44
>>771
遅レスすみません。
ありがとうございます。おかげでできました。
0773デフォルトの名無しさん2010/03/29(月) 21:37:47
コマンドプロンプトに表示された文字を(txt等)に出力ってできますか?
0774デフォルトの名無しさん2010/03/29(月) 21:42:46
無理
07757732010/03/29(月) 22:54:06
すみません、自己解決しました。

test.bat > log.txt
0776デフォルトの名無しさん2010/03/29(月) 23:40:05
>>775
それだと標準エラーがファイル出力できないよ
0777デフォルトの名無しさん2010/03/29(月) 23:48:00
test.bat > log.txt 2<&1
0778デフォルトの名無しさん2010/03/29(月) 23:59:44
>>776-777
そうなんですか、知りませんでした!
ありがとうございます。
0779デフォルトの名無しさん2010/03/30(火) 11:24:07
質問です。

ファイル
a.txt.bak
ab.html.bal
abc.exe.bak

があるとすると
拡張子.bakだけ一括で名前変更できるでしょうか?
0780デフォルトの名無しさん2010/03/30(火) 13:17:31
できないわけがない
0781デフォルトの名無しさん2010/03/30(火) 13:35:10
ren *.bak *.hoge
0782デフォルトの名無しさん2010/03/30(火) 13:51:39
それじゃ
a.txt.baka
ab.html.aho
abc.exe.baka

拡張子.bakaだけ一括で名前変更できるでしょうか?
07837792010/03/30(火) 14:02:57
すみません、質問の仕方が間違えていました。
bakの部分だけ消したいんです。

a.txt.bak→a.txt
0784デフォルトの名無しさん2010/03/30(火) 14:17:18
ren *.bak *.
0785デフォルトの名無しさん2010/03/30(火) 15:07:17
>>784
ありがとうございます
できました
0786デフォルトの名無しさん2010/03/30(火) 16:00:55
hogeよりはahoやbakaの方が好き
おっと、kusoも使うなw
0787デフォルトの名無しさん2010/03/30(火) 17:21:12
chinko
manko
unko
shikko
0788デフォルトの名無しさん2010/04/06(火) 00:27:29
すみません。テキストファイルの中身の特定行だけ抜き出す方法を教えてください。

test.txt中身
---------------
morning
hello
bye
---------------

上のようなファイルがあったとして、1行目のmorningや、3行目のbyeを
変数やファイルに出力する方法はないでしょうか。
外部コマンドは使えないWindowsXP/2003環境です。
0789デフォルトの名無しさん2010/04/06(火) 02:28:58
for /?
0790デフォルトの名無しさん2010/04/06(火) 02:28:59
>>788
find使って >baka.txtとかで出力

うまく使えば一つのバッチファイルで色んなバッチファイルを作成することができるから便利
0791デフォルトの名無しさん2010/04/06(火) 07:40:04
findは外部コマンド
0792デフォルトの名無しさん2010/04/06(火) 07:56:00
>>788
findstr /r "^morning$ ^bye$" > hoge.txt
0793デフォルトの名無しさん2010/04/06(火) 09:11:31
>>791
空気読め馬鹿
0794デフォルトの名無しさん2010/04/06(火) 09:28:43
料理できないと買ってきた惣菜をならべるぐらいのことでも自慢するんだよ
それ外で買ってきたんだろとあきれられてても本人は満足
0795デフォルトの名無しさん2010/04/06(火) 20:43:40
バッチファイルでテトリス作って
0796デフォルトの名無しさん2010/04/06(火) 22:12:33
>>792
ありがとうございます。
説明が不足してたのですが、必ずしも1行目にmorningがあって、3行目にbyeがあるわけじゃない場合に
1行目、3行目を抽出って出来るんでしょうか。根本から違うやり方考えた方が良いですかね・・・。
07977922010/04/06(火) 22:28:25
findstrコマンドは/cオプションを指定しない場合は、
二重引用符内で半角空白区切りで指定されたキーワードを
OR検索できるんだけど、
やりたいのは、特定キーワードで抽出したいんじゃなくて、
特定の行番号を抜き出したいってこと?
0798デフォルトの名無しさん2010/04/06(火) 23:05:41
下のようなのを作る場合変数iの引数は12個まで
とかいう決まりがあるのでしょうか?

for %%i in (%*) do xxxxx %%i
pause

このバッチファイルに引数となるファイルをドラッグ&ドロップしたら
「指定されたデバイス、パス、またはファイルにアクセスできません。
 アクセス許可がない可能性があります。」

と言われます。ちなみに12個まではOKでした。
0799デフォルトの名無しさん2010/04/06(火) 23:18:13
>>798
D&Dした複数ファイルのフルパス文字列の長さが限界に達したのでは?
その12ファイルをもっと浅い(フルパスの短い)階層に移動させれば、
13ファイル以上もいけるかと。

Win9x系かNT系かでも変わってくると思う。
08007992010/04/06(火) 23:21:16
ごめん。NT系でもNT4.0や2000とXP以降で違うみたい。
http://support.microsoft.com/kb/830473/ja
0801デフォルトの名無しさん2010/04/06(火) 23:25:24
>>799,800
たぶん、ファイルの長さだと思います。
ありがとうございました。
0802デフォルトの名無しさん2010/04/06(火) 23:34:51
たぶん?
結局どうでもよかったのか
08037922010/04/06(火) 23:55:34
>>796
find /n /v "" test.txt|findstr /b /l "[1] [3]"
または
type test.txt|find /n /v ""|findstr /b /l "[1] [3]"
または
type test.txt|findstr /n /v ""|findstr /r "^1: ^3:"

Mac環境から書き込んでてテストしてないから間違ってるかも。
特に3つ目の「findstr /n /v ""」は入力ファイルの全行に行番号出力になってないかも。
0804デフォルトの名無しさん2010/04/08(木) 23:02:04
>>801
>たぶん、ファイルの長さだと思います。
ファイルサイズは関係ないだろ
0805デフォルトの名無しさん2010/04/08(木) 23:09:06
<test.txt (
set /p x=
call echo %%x%% >1.txt
set /p x=
call echo %%x%% >2.txt
set /p x=
call echo %%x%% >3.txt
)
0806spectre2010/04/11(日) 18:40:33
アクティブな画面を「最新の情報に更新」にするバッチってありますかぁ?
どなたかよろしくお願いします。
0807デフォルトの名無しさん2010/04/11(日) 19:47:26
バッチでは不向きな気が…
簡単なものでよければ VBScript 辺りでどう?

' ## update.vbs ##
Dim objWshShell     ' WshShell オブジェクト
Set objWshShell = WScript.CreateObject("WScript.Shell")
If Err.Number = 0 Then
objWshShell.SendKeys "{F5}"    ' F5 を送信
Else
WScript.Echo "エラー: " & Err.Description
End If
Set objWshShell = Nothing
0808デフォルトの名無しさん2010/04/11(日) 19:53:59
しかしどうやって動かすんだ?
動いたときアクティブなウィンドウは?
0809デフォルトの名無しさん2010/04/11(日) 20:05:00
想定の範囲外です(キリッ
適当なフリーソフト使え
0810デフォルトの名無しさん2010/04/12(月) 19:17:26
ローカルでphpスクリプトを動かす際に一連の流れを
バッチファイルでまとめてしまおうと思ったのですが

cd "ディレクトリ1"
httpd.exe
cd "ディレクトリ2"
C:\php\php.exe batchtest.php

このようなバッチファイルを作ったところ
httpd.exeを起動したところで止まってしまい、httpd.exeを終了させないと
次の行に行きませんでした。

どのようにすればすべての処理が行われるでしょうか?
0811デフォルトの名無しさん2010/04/12(月) 19:36:02
cd "ディレクトリ1"
httpd.exe
taskkill /im httpd.exe
cd "ディレクトリ2"
C:\php\php.exe batchtest.php
0812デフォルトの名無しさん2010/04/12(月) 20:56:35
start httpd.exe
0813デフォルトの名無しさん2010/04/13(火) 07:38:21
>>811
ヒネリがないので笑えん。
0814デフォルトの名無しさん2010/04/13(火) 12:59:02
>>813
素直な奴だな。

httpd.exeを終了させないとtaskkillが実行されないという二段オチなのに。
0815デフォルトの名無しさん2010/04/13(火) 14:49:58
下記のバッチ内、:mpexec_core にある if 文で落ちてしまいます。
書き方に何か問題があるのでしょうか?
http://ideone.com/OvSYW
0816デフォルトの名無しさん2010/04/13(火) 15:10:11
その行だけじゃわからないよ
環境変数に適切な値が入っているならちゃんと動くように見える
echoの表示やエラーメッセージはどうなってんの?

エスパー初級な解答
if "%xxx%" geq "%yyy%"のように""で括れば
環境変数が空の場合でも落ちる事はなくなるはず
08178152010/04/13(火) 15:25:07
>816
if "%MP_MAX%" geq "%MP_NUM%" (
に変更しても落ちました。
直前の出力は
if 1 geq 1 (
なので、両方に1が入っていることは確認済みなのですが・・・。
エラーは 「コマンドの構文が誤っています。」 です。
0818デフォルトの名無しさん2010/04/13(火) 18:43:38
エラーの詳細が出るようにバッチの先頭におまじないを書いておく

echo W 100 2 0 200 | debug
0819デフォルトの名無しさん2010/04/13(火) 18:47:20
>>817
()のなかの命令が不適切なのでは?
0820デフォルトの名無しさん2010/04/13(火) 19:54:16
( ) の中で SET を使うのはやめといた方がいいよ
GOTO 文などに置き換えれば動くはず
08218152010/04/13(火) 20:06:10
>>819,820
()の中を関数化したら正常に動作しました。
ありがとうございました。
0822デフォルトの名無しさん2010/04/13(火) 20:43:32
すべてのウィンドウを「最新の情報に更新」にするバッチってありますかぁ?
0823デフォルトの名無しさん2010/04/13(火) 22:48:22
ないよ
0824デフォルトの名無しさん2010/04/14(水) 02:26:10
ありがとうございました。
0825デフォルトの名無しさん2010/04/14(水) 17:07:20
作成日時は%~t1で取れますかぁ?
0826デフォルトの名無しさん2010/04/14(水) 17:14:10
ヘルプ見るの面倒
0827デフォルトの名無しさん2010/04/16(金) 09:14:28
>>825
こういうこと?

for /? より

%~tI - %I ファイルの日付/時刻に展開します。

0828デフォルトの名無しさん2010/04/16(金) 14:10:17
それ更新日時
0829デフォルトの名無しさん2010/04/16(金) 18:25:03
>>828
827じゃないが、ファイルの日付が何になるかって、
環境変数で変更できなかったっけ?
まぁ、できなくても、作成日時だったら、
他の手段で、何とでもなるから困らないけどね
0830デフォルトの名無しさん2010/04/16(金) 20:08:20
それDIRCMD
0831デフォルトの名無しさん2010/04/17(土) 06:44:59
>>814
だから、それは一目見て分かることで何の面白味もないの。
0832デフォルトの名無しさん2010/04/17(土) 07:35:16
>>810
httpdが無いと動かないようなphpなら
netstatとか使って、httpdが起動完了したことを検知しないと駄目な気がする
まぁ、batchtest.php内で成功するまで待つって手もあるけど…
あと、最後にhttpdを止める必要はないの?
動かしっぱなしなら、httpdをバッチで起動する意味はないと思うけど?
0833デフォルトの名無しさん2010/04/20(火) 18:16:02
馬鹿じゃないんだからそんなこといちいち聞かれなくても分かってますよ。
0834デフォルトの名無しさん2010/04/23(金) 20:48:27
バッチでキューを実装したいけど実装できますよね?
現状想定案
■I/F
QUE.bat -que|-deq -prm1
prm1=パラメタファイル
格納DIR 、入力元DIR、出力先DIR、ファイル名
■que指定時
1.入力ファイル名と同名のファイルが格納先にないかチェック
↓  ↓ない
↓  末尾0付格納
3.カウンタをインクリし2に戻る
■deq指定
1.格納先ディレクトリに末尾0ファイルがあるかチェック
↓ ↓ない
↓ エラー返却
↓
↓ある
2.ファイルを出力先に出力
↓
3.カウンタで小さい方からサーチ
カウンタ-1でリネーム
0835デフォルトの名無しさん2010/04/23(金) 23:48:57
実装自体はいけそう
que指定時の2の処理が不明だったり
格納ファイルのフォーマット(ファイル名の規則)をどう定義するか
カウンタの初期値をどこから設定するかなど細部が気になる
0836デフォルトの名無しさん2010/04/24(土) 00:35:27
>>835
携帯から書いたら改行多すぎと言われて、消しすぎたぜ…

■大体決めたこと
1.格納先のファイル名は入力ファイル名+連番。
1〜が数えやすそうかな。

2.返却値はキューの残数。
取出失敗時はマイナス

■迷ってること
1.格納先DIRパスとファイルの種類は1対1で対応させるかどうか?

2.キュー残数チェック用のオプションを実装するか?

3.もっと汎用的な設計がないか?
(サンプル的なやつ)

4.バッチ暦10日だけどそもそも言語仕様的に無理とかないよね?

できそうと聞いて安心したよ。
迷4以外はただの設計とアルゴリズムだし。
技術的に困ったらまたお願いします。
08378342010/04/26(月) 07:58:31
キュー、デキューの処理中に再呼び出しされたら困るので、
ロック機能を実装してみた。

処理前にロック用ファイルがないかチェックして、なかったら作成。
あったら待ち。

処理終了後にロック用ファイル削除

複数起動時も一応ちゃんと動いたんだけど、もっと良い実装ないかな?
0838デフォルトの名無しさん2010/04/26(月) 15:52:21
ファイル作らんでも
0839デフォルトの名無しさん2010/04/28(水) 10:51:16
copy aaa.txt "%~1\bbb.txt"
というコードを書くとき、%1がc:\fooでもc:\foo\でも動くようにするのって
どういうコード書けばいいですか?
0840デフォルトの名無しさん2010/04/28(水) 11:14:55
動画のエンコを連続してやるためにバッチの最後で
自分以外で一番dir順の若いバッチファイル検索→
startで実行→自分自身を削除してexit
ってやってる。
実行順はファイル名で操作。
稚拙だろうけどね。
0841デフォルトの名無しさん2010/04/28(水) 11:26:50
>>839
copy aaa.txt "c:\foo\bbb.txt"
copy aaa.txt "c:\foo\\bbb.txt"

どっちも同じ動作しなかったっけ?

set hoge=%~1
if "%hoge:~-1%"=="\" set hoge=%hoge:~0,-1%
みたいにする?
0842デフォルトの名無しさん2010/04/28(水) 12:30:51
ヘルプに書いてあるのをいちいち説明するのめんどくさい
0843デフォルトの名無しさん2010/04/28(水) 12:56:55
>>842
ヘルプ見れで済んだら掲示板いらない
0844デフォルトの名無しさん2010/04/29(木) 00:06:49
for %%I in ("%~1\bbb.txt") do copy aaa.txt "%%~fI"
0845デフォルトの名無しさん2010/05/02(日) 10:56:25
call :main %* || pause
exit /b

:main
...

とかやっとくとエラーでてもウィンドウが閉じずに残ってくれていいね
0846tein2010/05/02(日) 13:48:31
質問です。

テキストファイル内の特定文字列を置換したいと思っています。

一度EOFまでのすべての行を行ごとに配列に挿入し、
そのすべての配列に対して指定文字列の検索、
ヒットした変数が存在した場合その変数に対して
変数内文字列置換を行った後、

すべての変数をECHOで新規ファイルに書き出していけば
ファイル内の文字列置換に成功すると思うのですが、
その記述方法がわかりません。

よろしくお願いいたします。
0847デフォルトの名無しさん2010/05/02(日) 14:10:56
何かの罰ゲーム?
0848デフォルトの名無しさん2010/05/02(日) 14:29:37
先に全部読む意味がわからん
0849デフォルトの名無しさん2010/05/02(日) 14:52:40
バッチファイルじゃないといけないんですか?文字列に強い言語を使っちゃだめなんでしょうか
0850デフォルトの名無しさん2010/05/02(日) 15:11:24
findstr とか
0851デフォルトの名無しさん2010/05/02(日) 15:20:40
>>846
すべてをメモリ上にっていうのは、DOSのメモリが小さいことを考えると作るだけ無駄。
環境変数を使った置換はできるけど、環境変数のメモリは特別小さいし制限もある。
元のファイルが壊れるだけだからエディタに読み込んで置換して保存っていうのをやる方がマシ。

複数行のテキストをコマンドに読み込ませて処理させることは出来るけど、
文字列置換はfindかなんかの専用コマンドでやった方がいいだろ。
ただ、指定した文字列が見つからない場合にそのまま出力してくれるかが問題。

詳しいことは分からないが、普通はコマンド一発でやるか、for ループで処理する。
0852デフォルトの名無しさん2010/05/02(日) 15:39:53
一時ファイルの代わりに環境変数を使おうとしてんだろ?
set file=line1!LF!line2
みたいにLF文字で区切ればいいよ
for /f %%i in (!file!)で行単位に取り出せる
0853デフォルトの名無しさん2010/05/02(日) 15:53:25
>>850-851
findやfindstrで文字列置換するって凄いな
0854デフォルトの名無しさん2010/05/02(日) 17:28:52
行番号挿入できるじゃない
0855tein2010/05/02(日) 17:43:54
>テキストファイル内の特定文字列を置換したいと思っています。

ですが、
bat処理中に自動で読み込み置換できればいいのです。

0856デフォルトの名無しさん2010/05/02(日) 18:00:49
sed とか使っちゃいけない”縛り”があるなら同情できるけど
そうだとしてもそうでなくとも何かしら使いたい話だね。
0857デフォルトの名無しさん2010/05/02(日) 18:38:56
まあでも単純な文字列置換なら誰かそういうバッチファイル作って公開してそうな気はする
0858デフォルトの名無しさん2010/05/02(日) 18:49:51
行番号挿入は文字列置換なんだ!凄いね
0859デフォルトの名無しさん2010/05/02(日) 18:57:56
それほどでもない
0860デフォルトの名無しさん2010/05/02(日) 19:27:21
文字列置換バッチでぐぐれば見つかるよ
0861tein2010/05/02(日) 20:19:09
内部に変数記号が含まれているため正常に置換できませんでした…
0862デフォルトの名無しさん2010/05/02(日) 21:06:36
>>853
勘違いした
0863デフォルトの名無しさん2010/05/02(日) 21:07:46
てめえ、シカトしてんじゃねえよ!
0864デフォルトの名無しさん2010/05/02(日) 22:29:54
>>863
あなたの発言は、どれ?
0865デフォルトの名無しさん2010/05/02(日) 22:36:33
>>846
powershellが簡単だよ

Windows PowerShell を使用してテキスト ファイルの文字を置き換える方法はありますか
0866Hage2010/05/02(日) 23:31:57
WindowsPowerShellって、Vistaからですよ。

ちなみに、CMDリファレンス
http://otnx.jp/CMD/
0867デフォルトの名無しさん2010/05/03(月) 00:28:24
>>861 と言ってんだからバッチじゃ無理だろ
0868デフォルトの名無しさん2010/05/03(月) 00:55:27
>>846
中身は殆どWSHだけど。file1のabcをすべてxyzに置換してfile2に書き出すなら
rep.cmd "/abc/xyz/g" file1 > file2
とする。

@if (0==1) rem *** rep.cmd ***
@cscript.exe //noLogo /e:jscript %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
@goto :eof @end
var args = WScript.Arguments;
if (args.length < 2) Usage();
var sep = args(0).slice(0, 1);
String.prototype.Unesc = function() { return this.replace(/\x00/g, sep); };
var a = args(0).replace(new RegExp("\\\\" + sep, "g"), "\0").split(sep);
if (a.length != 4 || a[1] == "") Usage();
try { var re = new RegExp(a[1].Unesc(), a[3].toLowerCase()); }
catch (e) { Usage() };
var rep = eval('"' + a[2].Unesc().replace(/"/g, '\\"') + '"');
var Fso = new ActiveXObject("Scripting.FileSystemObject");
for (var i = 1; i < args.length; i++) {
    try { var f = Fso.OpenTextFile(args(i)); }
    catch (e) { WScript.StdErr.WriteLine(args(i) + ": can't open"); continue; }
    while (!f.AtEndOfStream)
        WScript.StdOut.WriteLine(f.ReadLine().replace(re, rep));
    f.Close();
}
function Usage() {
    WScript.StdErr.WriteLine("Usage: rep.cmd /pattern/replacement/[gi] file...");
    WScript.Quit(1);
}
0869デフォルトの名無しさん2010/05/03(月) 01:05:44
2行目の 「%0」 は 「"%~f0"」 にして、
1行目と2行目の間に
@setlocal enableextensions
を入れたほうがより良いでしょう。
@cscript.exe を @"%SystemRoot%\system32\cscript.exe"
にするともっと良いか。
0870デフォルトの名無しさん2010/05/03(月) 01:19:34
わっめんどうの極み

powershellのほうがはるかに簡単だろ
0871デフォルトの名無しさん2010/05/03(月) 01:57:06
動けばいいレベルならこんな感じだから特別面倒でもないと思う。

@if (0==1) rem *** Usage: replace.cmd pattern replacement file ***
@cscript.exe //noLogo /e:jscript "%~f0" %1 %2 %3
@goto :eof @end
var args = WScript.Arguments;
var pat = new RegExp(args(0), "g"), rep = args(1);
with (new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(args(2))) {
    while (!AtEndOfStream)
        WScript.Echo(ReadLine().replace(pat, rep));
    Close();
}
0872デフォルトの名無しさん2010/05/03(月) 03:53:08
cat a.txt|%{$_ -replace "aaa","bbb"}|sc a.txt
と張り合うのか?
0873デフォルトの名無しさん2010/05/03(月) 04:57:43
wpsインストール+>>872より>>871のほうが手軽なのは確定的に明らか。
0874デフォルトの名無しさん2010/05/03(月) 09:31:04
しかし、Vista以降ならデフォルトで入ってるし、
実質WSHのバッチファイルが許されるならpowershellも許されるのでは?

rep.cmd "abc" "xyz" file1 > file2

@echo off
PowerShell -Command "& {$a,$b,$file=$args; Get-Content $file | ForEach-Object {$_ -replace $a, $b}}" %1 %2 %3
0875デフォルトの名無しさん2010/05/03(月) 09:33:26
つかどっちもスレ違いかw
0876デフォルトの名無しさん2010/05/03(月) 09:48:14
>>874
や、入ってるのは2008以降(2008, 7, 2008R2)だよ
まあ最近だとWindowsUpdateとかFixItで入ったりするけど
0877デフォルトの名無しさん2010/05/03(月) 16:04:24
PowerShellってmycmd.ps1をバッチファイルから簡単に呼べればもうちょっとガシガシ使えるんだけど
やり方がよくわからん
0878デフォルトの名無しさん2010/05/03(月) 16:09:31
>>873
明らかに逆
0879デフォルトの名無しさん2010/05/03(月) 16:11:25
>>877
PowerShell -file mycmd.ps1 引数。。。
0880tein2010/05/03(月) 17:46:37
>868
質問です。

これは、

abcを"~%0"あいう;「」@![0-5]{25}\nBなどという値に変更したとしても
問題ないでしょうか
0881デフォルトの名無しさん2010/05/03(月) 18:43:37
試せない時点で問題
0882デフォルトの名無しさん2010/05/04(火) 22:47:16
試さない時点で問題
0883デフォルトの名無しさん2010/05/04(火) 23:29:23
>>880
それが正規表現か単なる文字列なのかにもよるが…
rep.cmd "/\x32~%0\x32あいう;「」@![0-5]{25}\nB/xyz/g" file.txt
rep.cmd "/\x32~%0\x32あいう;「」@!\[0-5\]\{25\}\\nB/xyz/g" file.txt
0884デフォルトの名無しさん2010/05/05(水) 00:23:13
\nがあるからforeachじゃだめだろ
0885デフォルトの名無しさん2010/05/05(水) 14:02:30
>>868 >>871
ファイル上書きできねーよ
0886デフォルトの名無しさん2010/05/05(水) 14:07:26
そんなの工夫すればできる
0887デフォルトの名無しさん2010/05/05(水) 16:25:14
メモ帳が起動してるかどうかをもうちょっとスマートに判定できないだろか

for /f "usebackq delims==" %%i in (`tasklist /fi "imagename eq notepad.exe"`) do goto found
echo not found!
exit/b

:found
echo found!
0888デフォルトの名無しさん2010/05/05(水) 19:05:47
powershell "ps notepad" && (echo found!) || echo not found!
0889デフォルトの名無しさん2010/05/09(日) 21:04:02
ttp://mojalog.com/2007/08/post_34.html

コレを参考にバッチファイルで001〜500位の飛び飛びのjpgファイルを
昇順や降順でソート、001から002、003.jpgと順ににリネームするバッチファイルを作りたいのですが連番でリネームする部分をどう記述すれば良いのかさっぱりです。

だれか教えて偉い人
0890デフォルトの名無しさん2010/05/09(日) 21:16:19
作る過程が楽しいのであって、完成してもどうせ使わないんだから
こんなところで聞くなよ。
0891デフォルトの名無しさん2010/05/09(日) 21:26:24
http://hp.vector.co.jp/authors/VA014830/FlexRena/
0892デフォルトの名無しさん2010/05/09(日) 22:59:35
n=1000
for /f "delims=" %i in ('dir /b /on *.jpg') do (
set /a n+=1
call ren "%~i" %%n:~1%%.jpg
)
0893デフォルトの名無しさん2010/05/09(日) 23:03:42
%i 誤 -> %%i 正
08948892010/05/10(月) 00:02:27
dir /b *.jpg | sort /R > dir.txt
echo rem ファイル名を降順ソートしてリネームします>temp.bat
set n=1
set SWAPFILENAME=
for /f "tokens=1,2* delims=." %%i in ( dir.txt ) do (
set SWAPFILENAME=%%i
goto label
)
:label
for /f %%i in ( dir.txt ) do (
set /a n=n+1
SETで(n)の頭に0000を足した物をnumとかに設定する
numの後ろから4桁を取り出してnumに入れなおす
echo ren %%i (numに入ってる連番).tmp>>temp.bat
)

で、出来たTemp.batを実行後、*.tmpを*.jpgにリネームしなおす見たいな感じにしたいと思ってますが上手いこと行きませんです。

つーかnを+1ずつ加算する所からして上手く行ってないんですよコレが。

向いてないのは重々承知してますがこうすれば良いんだよって教えて偉い人
0895デフォルトの名無しさん2010/05/10(月) 00:41:29
変数nの呼び出しは%n%とかこんな低レベルから人に聞くレベル?


set n=10000
for /f "usebackq delims=" %%i in (`dir /b/o-n *.jpg`) do (
0896デフォルトの名無しさん2010/05/10(月) 00:52:30
setlocal enableextensions enabledelayedexpansion
set n=10000
for /f "usebackq delims=" %%i in (`dir /b/o-n *.jpg`) do (
set /a n+=1
ren "%%~i" "!n:~-4!.jpg"
)

:途中で書き込んでしまった。
:リネーム先と同じ名前のファイルが無いの前提だが。
0897デフォルトの名無しさん2010/05/10(月) 01:00:50
1: 遅延展開をON
2: n=10000
3: dir /on ソート名前昇順 /o-n ソート名前逆順
4: nに1加算
5: 10001,10002,,,,100** の下4文字だけにすれば 0001,0002,,,,00**になる

終
0898デフォルトの名無しさん2010/05/10(月) 01:08:46
つか上全然見てなかった。もろ被りやな。
08998892010/05/10(月) 02:30:18
親切にありがとうございます。
バッチファイルなんて17年ぶりだったんで右往左往してたのですが助かりました。

コレを期に本でも買って勉強してきます。
0900デフォルトの名無しさん2010/05/10(月) 06:39:29
本、あるのか?
0901デフォルトの名無しさん2010/05/10(月) 18:30:24
結構あるみたいね
0902デフォルトの名無しさん2010/05/11(火) 21:45:23
ググってもわからなかったので質問。
%a%が、yでもnでもない場合にgoto aしたいんだけど、
@if not "%a%"=="y,n" goto a
って書いたら駄目だった。
問題は"y,n"の部分だと思うんだけどなんて書いたらいいんでしょう?
0903デフォルトの名無しさん2010/05/11(火) 21:51:25
辛うじて自己解決できたかもしれない。
:a
@if %a%==y goto y
@if %a%==n (goto n) else goto a
ってやったら動いたんだけどこんな感じで不具合出たりしないんでしょうか?
(yかnで訊いて、yかn以外が返ってきたら:aに戻りたい)
0904デフォルトの名無しさん2010/05/11(火) 22:16:17
そら応用力はググって解決できるもんじゃないわな
0905デフォルトの名無しさん2010/05/11(火) 22:21:52
choice.exeをぐぐれ
0906デフォルトの名無しさん2010/05/11(火) 22:29:41
動いて用が足りればいいや程度のもんだろ
不具合でてまずいような用途に使うやつはいない
0907デフォルトの名無しさん2010/05/11(火) 23:31:39
if "%a%" neq "y" (if "%a%" neq "n" goto a)
0908デフォルトの名無しさん2010/05/12(水) 01:25:59
>>903
空
Y
>
のケースをテスト
0909デフォルトの名無しさん2010/05/12(水) 01:39:08
>>907 ()は必要ないよ
0910デフォルトの名無しさん2010/05/12(水) 08:09:30
バッチファイルの実行でctrl+alt+Iなどのキーボード操作をしたいのですが、できますでしょうか?
0911デフォルトの名無しさん2010/05/12(水) 08:12:04
できないわけがない
0912デフォルトの名無しさん2010/05/12(水) 10:32:27
win32api呼んでキーの押下状態調べてループから抜ける
小物ツール作ってバッチから呼ぶしかない
0913デフォルトの名無しさん2010/05/12(水) 14:16:20
wscript.shell使えばええがな
0914デフォルトの名無しさん2010/05/12(水) 18:23:58
やればわかるがこのばあいmshtaはやめたほうがええよ
cscriptならだいじょうぶ
09159022010/05/12(水) 21:49:48
みなさん回答ありがとうございました。
>>905が一番理想に近いのでこれに決めました。
(昔のwindowsにはchoiceなんてコマンドがあったことなんて知らなかったw)
0916デフォルトの名無しさん2010/05/21(金) 23:52:57
>>912
>win32api呼んでキーの押下状態調べてループから抜ける
???
0917デフォルトの名無しさん2010/05/29(土) 18:58:48
現在日時の取得を正確に行いたいのですが
バッチファイルの1行に「echo %DATE% %TIME%」と記述した場合に%DATE%と
%TIME%は必ず全く同じ日時を表示するでしょうか?

%DATE%で一度システム時刻を取得し%TIME%でももう一度システム時刻を
取得しているのか、一度システム時刻を取得した後に%DATE%と%TIME%
にはその取得した時刻を展開しているのでしょうか?
0918デフォルトの名無しさん2010/05/29(土) 19:15:57
そんな細かい挙動なんてわかる奴いるのかw

date
time

date
time
の順に取ってdateが同じなら前二個を、食い違ってたら後ろ二個を使えばいいんじゃね。とりあえずは
0919デフォルトの名無しさん2010/05/29(土) 19:20:18
echo %time% %time% ...
0920デフォルトの名無しさん2010/05/29(土) 19:31:15
わかるよ

set d=%date%
set t=%time%
if not "%date%"=="%d%" (
set d=%date%
set t=%time%
)
とやれば大丈夫
0921デフォルトの名無しさん2010/05/29(土) 19:37:52
type nul > tmp
for %%i in (tmp) do set dt=%%~ti
echo %dt%
なら気にせんでえーよ
0922デフォルトの名無しさん2010/05/29(土) 21:03:21
貧乏から抜け出せだそうと藁でもつかんでるやつみたいだな
本人は必死なんだろうけど見てると滑稽
09239172010/05/30(日) 01:45:22
どうもありがとうございます。
できるだけシンプルなやり方で>>920さんのやり方を使おうと思います。

REM バッチ起動日時の取得(現在日時)
SET STARTDATE=%date%
SET STARTTIME=%time%
IF NOT "%date%"=="%STARTDATE%" (
    SET STARTDATE=%date%
    SET STARTTIME=%time%
)
SET STARTTIME=%STARTTIME: =0%
0924デフォルトの名無しさん2010/05/30(日) 15:51:48
now.exe使え
0925デフォルトの名無しさん2010/06/03(木) 00:09:52
以下のような内容のテキストファイルがあるとして、
-----
123
abcd
あいうえお
aaaa
-----
上から1行ずつ変数に格納したいのですが、どうすればいいでしょうか。
尚、テキストファイルの行数は、一定とは限らない場合で書き方を教えてください。

0926デフォルトの名無しさん2010/06/03(木) 06:18:49
for で普通に回す
0927デフォルトの名無しさん2010/06/03(木) 06:38:07
forいろいろ試したんですが、うまくいきません
書式を書いて頂けないでしょうか。
0928デフォルトの名無しさん2010/06/03(木) 09:13:41
>>927
help for
に参考例が書いてあるよ
0929デフォルトの名無しさん2010/06/03(木) 23:08:41
繰り返し処理は出来るけど、変数をセットする際の添字の扱いが分かりません。
添字って使えるんでしょうか
0930デフォルトの名無しさん2010/06/04(金) 00:04:36
http://ja.wikipedia.org/wiki/%E6%B7%BB%E3%81%88%E5%AD%97
>添え字は、文字の右上、左上、右下、左下のいずれかに書かれる文字のことである。
>上付き文字や下付き文字も添え字のひとつであるほか、漢文の送り仮名も添え字である。
>縦書きで表記する場合には、冪乗を表す場合を除き上付き文字や下付き文字という言葉は使用されない。


ん〜〜 使えないかな〜?
0931デフォルトの名無しさん2010/06/04(金) 00:18:48
>>929
http://d.hatena.ne.jp/jak-san/20090308/1236501217
0932デフォルトの名無しさん2010/06/04(金) 11:00:03
バッチで常に最前面表示ってできませんか?
vbs呼び出してがんばったけど難しすぎた・・
0933デフォルトの名無しさん2010/06/04(金) 11:50:19
もちろんできる
0934デフォルトの名無しさん2010/06/07(月) 00:04:49
おしえてくださいなり・・
0935デフォルトの名無しさん2010/06/08(火) 11:34:22
for /r "%~1" %%I in (*) do @echo %%~I
みたいにワイルドカードを使う場合は隠しファイルが除外されちゃうんだけど
ワイルドカードに隠しファイルを含める方法は無い?

for /f "delims=" %%I in ('dir "%~1" /b/s/a:-d') do @echo %%~I
こんな感じにdirコマンドを使うしかない?
0936デフォルトの名無しさん2010/06/08(火) 13:41:54
コマンドラインオプションに対応しないアプリにファイルを渡したいのですが
ファイルドロップや送るを再現することはできますか?

start "" "ファイル"
rundll32.exe url.dll,FileProtocolHandler ファイル
これらは関連付けされているアプリでファイルを開くことしかできず

start "" "アプリ" "ファイル"
だとドラッグ&ドロップとは挙動が違うのです
0937デフォルトの名無しさん2010/06/08(火) 14:03:48
>>935
無いだろうね。

同じ動作をしようと思ったらfor /fを入れ子に…出来ないから
サブルーチン作ることになるんじゃないかと。
0938デフォルトの名無しさん2010/06/09(水) 00:38:11
お願いします。

HDDドライブ内の複数のフォルダに、
重複しないファイル名のファイルがたくさんあります。
これを同一階層に纏めたいのですが、よさげなコマンドを見つけられませんでした。

希望としては

C:\>file /path D:\hoge[Enter]
D:\hoge\aaa.txt
D:\hoge\masao\bbb.txt
D:\hoge\masao\ccc.txt
D:\hoge\masao\shigemi\111.txt
(以下、ファイルの一覧が完全パス付で出力される)

というようなリストが出れば最高です。

Linux側で対象のドライブをSMBマウントして、findコマンドと組み合わせたりしてみましたけど、
Win機がわが途中でフリーズしてしまったりで、うまくいきませんでした。

ほかの方法もあるよ!ってことでもけっこうでございます。
お知恵をおかしください。
0939デフォルトの名無しさん2010/06/09(水) 00:46:53
>>938
cygwin入れてfindじゃいかんの?
0940デフォルトの名無しさん2010/06/09(水) 01:30:40
dir /b /s *.txt
0941デフォルトの名無しさん2010/06/09(水) 03:08:40
for /r D:\hoge %%f in (*.txt) do move %%f D:\hoge\
0942デフォルトの名無しさん2010/06/09(水) 08:35:16
移動だけならエクスプローラで一発
0943デフォルトの名無しさん2010/06/09(水) 09:30:06
cygwinなくても単体で動くfindぐらい、いくらでもあるよ。
俺も自分で作ったしw
0944デフォルトの名無しさん2010/06/09(水) 14:03:23
>>937
>同じ動作をしようと思ったらfor /fを入れ子に…出来ないから
>サブルーチン作ることになるんじゃないかと。

はぁ〜?
0945デフォルトの名無しさん2010/06/09(水) 14:12:12
>>936
DropTarget
0946デフォルトの名無しさん2010/06/09(水) 16:13:33
DropTargetってなんの関数だろう
レベル高くてついていけないわ
0947デフォルトの名無しさん2010/06/11(金) 12:35:33
ttp://msdn.microsoft.com/en-us/library/cc144148(VS.85).aspx
0948デフォルトの名無しさん2010/06/11(金) 13:03:40
sendkeys "%fo" & "ファイル" & "{enter}"
0949デフォルトの名無しさん2010/06/11(金) 21:09:31
http://www.atmarkit.co.jp/fwin2k/win2ktips/112changepriority/112changepriority_02.html
XPでstartコマンドで優先度を指定してプログラム起動をしたいんだけど、上手くいかないです。
アイデアあったら教えてください。

cmd.exeを起動。タスクマネージャーやprocexpで優先度を確認。

C:\Documents and Settings\user>start /high calc.exe
上手く行く。
C:\Documents and Settings\user>start /high C:\WINNT\system32\calc.exe
上手く行く。
C:\Documents and Settings\user>start /high E:\Progra~1\mpc\mplayerc.exe
これは起動するけど、優先度が「通常」のまま。プログラムはこれ。
http://ja.wikipedia.org/wiki/Media_Player_Classic

なぜ、優先度が設定できないのか、良く分かりません。
vbsでやる方法はありますか?
0950デフォルトの名無しさん2010/06/11(金) 21:21:22
プログラムの仕様ならそういう風
0951デフォルトの名無しさん2010/06/11(金) 21:31:20
プログラムを作った経験があれば当然知ってるだろうけど
プログラムの側で優先度を設定できる。
0952デフォルトの名無しさん2010/06/11(金) 23:21:09
>>950
>>951
プログラムには詳しくないのですが、
起動後に「高」に変更は出来ます。

MPC自体が、起動時に優先度を「通常」にする
ということでしょうか?
0953デフォルトの名無しさん2010/06/11(金) 23:27:37
MPCの設定を見たら、優先度の項目がありました。
ソースは見てないけど、多分、内部で「通常」にしてるのかと思います。
ありがとうございました。
0954デフォルトの名無しさん2010/06/13(日) 01:21:19
ちょと質問
Find の返り値をIF 文で使いたいんだけど
こういう時ってのはイチイチ
echo %str% | find /i /c %ptrn% > %temp%
set /p len=<%temp%
こんな回りくどいことしないと使えないのかな?
0955デフォルトの名無しさん2010/06/13(日) 01:25:46
WMI
0956デフォルトの名無しさん2010/06/13(日) 01:52:46
>>954
for /f %%i in ('"echo %str% | find /i /c %ptrn%"') do set len=%%i
0957デフォルトの名無しさん2010/06/13(日) 02:15:46
>>956
�d�d
スッキリしたなの
0958デフォルトの名無しさん2010/06/13(日) 14:12:46
UNIXならps -efコマンドで実行中プロセスの引数を含んだコマンドラインが表示されるので、
ps -ef|grep `basename $0`で、シェルの多重起動制御ができますが、

Windowsバッチで同様のことを
tasklist|findstr "%~n0"
でできるかと思ったのですが、tasklistコマンドはコマンドライン引数を表示しないため、
バッチファイル実行中もcmd.exeが表示されるのみです。

tasklistコマンド以外を使用する等で、何か解決策はないでしょうか?
09599582010/06/13(日) 14:16:07
環境を書き忘れました。OSはWin2003です。
0960デフォルトの名無しさん2010/06/13(日) 14:59:27
そういうプログラムを探すか自分で作れば可能
プログラム板は基本的に自分で作る方向
0961デフォルトの名無しさん2010/06/13(日) 15:43:11
>>958
bfindwin でググってごらん
0962デフォルトの名無しさん2010/06/13(日) 17:10:33
titleで一意に変えてtasklistで調べればよい
0963デフォルトの名無しさん2010/06/13(日) 17:15:57
wmic.exeでコマンドラインわかる
0964デフォルトの名無しさん2010/06/13(日) 19:01:27
>>925
set n=0
for /f %%a in (a.txt) do (
set /a n+=1
call set x%%n%%=%%a
)
for /l %%k in (1,1,%n%) do call echo %%x%%k%%
09659582010/06/13(日) 20:23:16
>>963
wmic process get CommandLine,ProcessId|findstr /i /c:"%~nx0"
でバッチリ、コマンドライン引数を取得できました。どうもありがとうございます。


さらに質問なのですが、多重起動制御にあたり、自分自身のプロセスIDの行は除去しようと思うのですが、
UNIXの"$$"のようなプロセスIDの取得方法はWindowsバッチでないでしょうか?
0966デフォルトの名無しさん2010/06/13(日) 20:41:52
Unix使いならmanぐらい知ってるはずだが、
まずはmanに相当するもので調べてみようとは思わなかったのだろうか?
0967デフォルトの名無しさん2010/06/13(日) 20:50:23
win上にunixらしき環境でも作って使えばいい。
0968デフォルトの名無しさん2010/06/13(日) 22:31:51
wmic.exeのparentprocessid
0969デフォルトの名無しさん2010/06/13(日) 22:39:41
>>966
恥かいちゃったねw
0970デフォルトの名無しさん2010/06/13(日) 22:48:52
ヘルプ嫁
0971デフォルトの名無しさん2010/06/13(日) 22:55:48
>>949
wmi setpriority
0972デフォルトの名無しさん2010/06/13(日) 22:57:48
質問いいですか?
UNIXの"$?"のようなものはWindowsバッチでないでしょうか?
0973デフォルトの名無しさん2010/06/13(日) 23:00:32
ある
0974デフォルトの名無しさん2010/06/13(日) 23:04:52
もしBAT自身でできなくても外部コマンド呼べばたいていのことはできる
0975デフォルトの名無しさん2010/06/13(日) 23:10:46
外部コマンドにはヘルプがついているよ
0976デフォルトの名無しさん2010/06/13(日) 23:14:14
wmi動かなかった
09779582010/06/13(日) 23:15:00
>>972
%errorlevel%です。大文字小文字の区別はないようです。

>>968
レスありがとうございます。
ですが、parentprocessidはUNIXでいうPPIDにあたるようで、
実行中のバッチファイル自身のプロセスIDではないようです。
0978デフォルトの名無しさん2010/06/13(日) 23:17:11
wmic.exeのparentprocessidは何?
0979デフォルトの名無しさん2010/06/13(日) 23:17:18
>976
WMI が動作していません。どのようにトラブルシューティングすればよいですか。

スクリプトの実行時、CIM Studio などの WMI ベースのツールの実行時、
または WMI コントロールの使用時には、WMI サービスに関する問題が発生することがあります。
スクリプトが実行されなかったり、"アクセスは拒否されました"
というエラー メッセージが表示されたりすることがあります。
このエラーの原因としては、WMI が動作していないか、
名前空間が正しく構成されていないかのどちらかが考えられます。
また、クラスを提供している WMI プロバイダがロードされていない場合や、
WMI リポジトリ (クラス定義の格納場所) が壊れた場合にも、エラーが発生することがあります。

WMI サービスに関する問題をトラブルシューティングするには、次の作業を行います。

リモート コンピュータへの接続に関して問題が生じている場合は、
ローカル コンピュータ上でスクリプトを実行してみてください。
WMI サービスを再起動します。
WMI リポジトリを再構築します。
すべての WMI コンポーネントを再登録します。
オペレーティング システムを再インストールします。
マイクロソフト製品サポート サービスに問い合わせます。
0980デフォルトの名無しさん2010/06/13(日) 23:19:40
リモート コンピュータへの接続に関して問題が生じている場合は、
ローカル コンピュータ上でスクリプトを実行してみる
リモート コンピュータへの接続に関して問題が生じている場合は、
他の操作を行う前にローカル コンピュータ上でスクリプトを実行してみてください。
ローカル コンピュータ上でスクリプトを実行できるのであれば、
「WMI でリモート コンピュータを管理するにはどうすればよいですか」のトピックを参照してください。
ローカル コンピュータでスクリプトを実行できない場合は、次のトラブルシューティング手順を実行してください。

ローカル コンピュータ上での WMI 操作が失敗し、予期せぬエラー コードが返される場合や、
WMI コントロールを起動できない場合は、ローカル WMI サービスが稼動しているかどうかを確認します。

スクリプトを実行できるのであれば、WMI サービスは稼動しており、
WMI サービス自体に問題はないと考えることができます。

0981デフォルトの名無しさん2010/06/13(日) 23:30:48
'wmi' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
09829582010/06/13(日) 23:39:11
sc start winmgmt
0983デフォルトの名無しさん2010/06/13(日) 23:52:46
wmicって処理論理組めないよね〜
0984デフォルトの名無しさん2010/06/14(月) 03:56:53
UNIXついでに質問いいかな?
UNIXのsplitのようなものはWindowsバッチにありますか?
0985デフォルトの名無しさん2010/06/14(月) 07:14:17
>>984
「Windowsバッチ」って何だよ?
0986デフォルトの名無しさん2010/06/14(月) 08:19:07
UNIXのsuのようなものはWindowsバッチにありますか?
0987デフォルトの名無しさん2010/06/14(月) 08:31:53
酢??????
0988デフォルトの名無しさん2010/06/14(月) 08:38:32
___ ___
  ◎   タコデス
0989デフォルトの名無しさん2010/06/14(月) 08:43:59
___ ___
  ◎   酢タコデス
/ | | | \
0990デフォルトの名無しさん2010/06/14(月) 08:52:34
>su -d -a -k -o
0991デフォルトの名無しさん2010/06/14(月) 10:01:51
△
゜ロ゜ < イカデス
川

0992デフォルトの名無しさん2010/06/14(月) 10:14:28
スルメwww
0993デフォルトの名無しさん2010/06/14(月) 10:18:01
△
^.^ < スルメデス
川
0994デフォルトの名無しさん2010/06/14(月) 10:55:52
いい年こいたおっさんがこんな事やってるのかと思うと悲しくなってくるね
0995デフォルトの名無しさん2010/06/14(月) 11:39:55
>>986

>su -r -u -m -e
0996デフォルトの名無しさん2010/06/14(月) 11:44:05
'su' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
0997デフォルトの名無しさん2010/06/14(月) 11:50:36
>>986

>su -m -a -t -a
0998デフォルトの名無しさん2010/06/14(月) 11:55:17
すまた?
0999デフォルトの名無しさん2010/06/14(月) 11:58:32
素股w
1000デフォルトの名無しさん2010/06/14(月) 12:03:19
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。