5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2009/05/14(木) 11:29:31
前スレ
【.cmd】 バッチファイルスクリプト %4 【.bat】
http://pc12.2ch.net/test/read.cgi/tech/1229955189/

2 :デフォルトの名無しさん:2009/05/14(木) 11:32:13
@echo 乙>>1

3 :デフォルトの名無しさん: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/


4 :デフォルトの名無しさん:2009/05/14(木) 13:03:22
start /?

5 :デフォルトの名無しさん:2009/05/14(木) 13:04:16
for /?

6 :デフォルトの名無しさん:2009/05/14(木) 13:05:05
set /?

7 :デフォルトの名無しさん:2009/05/14(木) 14:19:43
.bat を実行すると 「コマンド.exe > テキスト.txt」 と書いてある部分が、
「コマンド.exe 1> テキスト.txt」 と "1" が入るのだが何故なんだぜ?

8 :デフォルトの名無しさん:2009/05/14(木) 14:27:44
>7
標準出力が1で標準エラー出力が2
数字を省略すると1、つまり標準出力とみなされる

9 :デフォルトの名無しさん:2009/05/14(木) 14:35:05
>>8
どうもありがとう。

10 :デフォルトの名無しさん:2009/05/17(日) 23:26:45
forfilesをXPに移植してくれ

11 :デフォルトの名無しさん:2009/05/18(月) 22:17:19
以下のようなテキストファイルの判定を行いたいのですが、
STARTとENDという文字列があり、
STARTの方が、ファイルの先にあり、ENDが後にあると
判定するにはどうすれば良いでしょうか。

test.txt-----------------------------------
ランダムな文字列ランダムな文字列ランダムな文字列
ランダムな文字列ランダムな文字列 START
ランダムな文字列ランダムな文字列ランダムな文字列
ランダムな文字列ランダムな文字列ランダムな文字列
ランダムな文字列ランダムな文字列 END
ランダムな文字列ランダムな文字列ランダムな文字列
-------------------------------------------


12 :デフォルトの名無しさん:2009/05/18(月) 23:36:27
>>11のようなのはのってawkがあると楽だよね

gawk "/START/{s=1}/END/{exit s}" textfile.txt
if errorlevel 1 echo OK

13 :デフォルトの名無しさん: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 だよ

14 :デフォルトの名無しさん:2009/05/21(木) 20:30:03
>>10
つかえないんだっけ?

15 :デフォルトの名無しさん:2009/05/23(土) 15:31:27
2003にはついてるらしいからXPでもうごくだろ

16 :デフォルトの名無しさん:2009/05/24(日) 01:27:24
7rcのは動かないな

17 :デフォルトの名無しさん:2009/05/24(日) 02:43:50
シンタクス間違えてない?

18 :デフォルトの名無しさん:2009/05/24(日) 18:30:11
test.xmlファイル内にある「XXX」という文字列を検索して
「XXX」が含まれる行以下4行をコメントアウトしたい場合、どのように組めばいいんだろう。

test.xml

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



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

といった具合にコメントアウトしたい。

19 :デフォルトの名無しさん:2009/05/24(日) 18:43:13
バッチ向きではありません

20 :デフォルトの名無しさん:2009/05/24(日) 18:46:31
xmlは文字コードがUTFだったりするし
わざわざバッチでやるやつがいるか?

21 :デフォルトの名無しさん:2009/05/24(日) 19:05:03
>>19-20
うぅむ。難しいんですかね。
文字コードはShift_JISのはずですが。
xmlを公開、配布していて、そのxmlをユーザー側でバージョンアップさせるために
バッチファイルを使って中身を書き換えられれば良いかと思ったのですが。。。

22 :デフォルトの名無しさん:2009/05/24(日) 19:20:06
自分で使うなら好きにすればいい。
人に配布するならまともな方法を選ぶべき

23 :デフォルトの名無しさん:2009/05/24(日) 23:43:46
()<>"!はバッチで扱いにくいからやめとけ

24 :デフォルトの名無しさん:2009/06/01(月) 00:43:40
WindowsのPATH区切り文字ってセミコロンだけど
ファイル名に使用できちゃうって事を誰も咎めないの?

25 :デフォルトの名無しさん:2009/06/01(月) 00:48:11
パスデリミタはセミコロンじゃないお
バックスラッシュだお

26 :デフォルトの名無しさん:2009/06/01(月) 12:44:45
””

27 :デフォルトの名無しさん:2009/06/01(月) 14:11:31
>>25 PATH環境変数のことだべ
>>26 PATH="c:\hoge;hoge";c:windows みたいに書けと言っとります


28 :デフォルトの名無しさん:2009/06/02(火) 16:13:11
レジストリからキーの値を取得して変数にセットすることは可能ですか?

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\TimeZoneKeyName
のキーから読み込んだ値を任意の変数にセットしたいのですが
REG QUERYを使うまでは分かったものの、そこから先へ進めず手詰まりの状態です

29 :デフォルトの名無しさん:2009/06/02(火) 16:54:17
もちろん可能だが、バッチでやる意味がない

30 :デフォルトの名無しさん:2009/06/02(火) 17:05:52
for/?

31 :デフォルトの名無しさん: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).

32 :デフォルトの名無しさん:2009/06/07(日) 21:57:23
>>28
ファイルにリダイレクトしてから、forで取り込むとか

33 :デフォルトの名無しさん:2009/06/07(日) 23:55:15
>>32
もう解決しました
batファイルだけでOKな方法で

34 :デフォルトの名無しさん:2009/06/08(月) 12:03:46
ファイルにリダイレクトせずとも、forで取り込めるだろ

35 :デフォルトの名無しさん:2009/06/09(火) 06:38:45
for文の記述が複雑になるから嫌だ

36 :デフォルトの名無しさん:2009/06/09(火) 13:41:18
複雑さのレベルが低そうだな

37 :デフォルトの名無しさん:2009/06/13(土) 03:40:26
バッチファイルの中でファイルを実行させ、その後終了を待たずに次の処理に移らせたいのですが、やりかたがわかりません。
------------
%1
del %1
------------
今は上記のように書いていて、あるファイルをD&Dでバッチファイルに送るとそれを実行し、すぐさま削除、となるようにしたいのですが、
1行目のファイルを実行したところで止まり、アプリケーションを手動で終了させないと次に進んでくれません。
(D&Dで実行させたいファイルはアプリケーションが起動中でも削除可能)
解決策があれば教えてください。よろしくお願いします。

38 :デフォルトの名無しさん:2009/06/13(土) 03:49:51
startコマンドを使う
ただ、直後だと流石に削除が早すぎる気がする
何らかの方法で多少の待ち時間は入れた方が良くないか

39 :37:2009/06/13(土) 04:52:26
>>38
早速のレスありがとうございます!
startコマンドを使用してみたところ、期待通り動作してくれるようになりました。

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

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

40 :デフォルトの名無しさん:2009/06/13(土) 22:07:03
:loop
del %1 || ping localhost -n 2 && goto loop

とかやっとけばリトライできる

41 :デフォルトの名無しさん:2009/06/14(日) 03:31:15
pingと来たかw

42 :デフォルトの名無しさん: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までしか入らない・・・
空白文字に対応するのはどうすれば?

43 :デフォルトの名無しさん:2009/06/16(火) 15:34:30
>>28-33

44 :デフォルトの名無しさん: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

45 :(1/2):2009/06/16(火) 20:09:17
システムのお守りを任されて一ヶ月。毎日オラクルと日次バッチのログ確認をしているの
ですが質問をさせてもらいやす。

現在VNCのようなソフトでwindowsサーバにログイン後、
吐き出されたログにエラーが含まれてないかのチェックを行ってます。

************************************************************************
1. 日次バッチのログ

▽親バッチログフォルダ
├▽子フォルダ1
│  └ログ1
├▽子フォルダ2
│  └ログ2

└▽子フォルダ9
   └ログ9

これら1〜9のログ全てから、「エラー」「Ora-***」の文字が含まれる行を出力したい。

************************************************************************

46 :(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」を含む行を出力したい。
************************************************************************

アウトプットの方法はバッチ起動したらコンソールに表示でも、既に絞り込まれて一つの
ファイルにまとめられたとかでも確認作業の効率化が図れればなんでもいいです。、
バッチ処理内容を変更できないので、あくまで生成されたログに対しての確認の効率化の方法をお願いします。

47 :デフォルトの名無しさん:2009/06/16(火) 20:17:13
バッチファイルよりWSH向きな気がする
Win板のWSHスレかコマンドスレ行ってみたら?

…まぁ、どうしてもバッチでやりたいと言うなら
このスレ的にも問題は無いから、ちょっと考えてさせて欲しいw

48 :デフォルトの名無しさん:2009/06/16(火) 20:21:47
>47
やはりWSH向きですかね? 自分でどうにかしようと調べたときにはWSHという存在も知ったのですが…
bat以上に馴染みがなかったので少しはわかるbatでの方法を聞いてみようかと

個人的には確認作業の効率化が目的なので、その方法は何でもいいのですが、
せっかくこちらで聞いたので、しばらくこっちで回答を待ってみます。
よい方法がないとかあまりに非効率的そうなら改めてWSHスレで聞いてみます。

49 :デフォルトの名無しさん:2009/06/17(水) 21:03:50
findstr "Err Caution" ログファイル名 >err.log
じゃあだめなのかなfor /rで各階層を見に行って。
messengerサービスが動いていれば、その後net sendで監視用クライアントにメッセージ飛ばす。


50 :デフォルトの名無しさん:2009/06/17(水) 22:42:50
>>40

51 :デフォルトの名無しさん:2009/06/17(水) 22:43:36
del %1 || (ping localhost -n 2 & goto loop )

52 :デフォルトの名無しさん: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から戻ったときのカレントディレクトリにもどすような手段はないものでしょうか?

53 :デフォルトの名無しさん:2009/06/28(日) 16:26:10
x のように、別ディレクトリのカレントディレクトリを内部で帰るバッチをcallした後は、
o のように、カレントディレクトリを内部で変える別ディレクトリのバッチをcallした後は、

54 :デフォルトの名無しさん:2009/06/28(日) 17:02:11
cmd.exe /c hagemoge\called.bat

55 :デフォルトの名無しさん:2009/06/28(日) 18:37:10
----hagemoge\called.bat
setlocal
cd /D %~dp0
dir

56 :デフォルトの名無しさん:2009/06/28(日) 21:14:30
pushd
popd

57 :デフォルトの名無しさん:2009/06/28(日) 22:04:01
テスト


58 :デフォルトの名無しさん:2009/06/28(日) 22:53:54
すいません、質問です。
for .. in do ren 文に関するとところで問題が起きました

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

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

といった流れでバッチファイルを作ったのですが
コマンドが間違っていると怒られました。
「ファイル名を短くする」といった作業だけでもうまくいけば
全ての作業がうまくいくと思うので皆様の英知をお貸しくださいませ

59 :デフォルトの名無しさん:2009/06/29(月) 00:17:55
%%i:~0,4
なにこれ?こんなのないだろ?

60 :デフォルトの名無しさん:2009/06/29(月) 00:22:40
短いファイル名にすりゃいいだろ

61 :デフォルトの名無しさん:2009/06/29(月) 00:27:08
>>59
例えば
echo %date%
だったら
2009/06/29
って出力されるじゃないですか?
それを
echo %date:~0,4%
としたら
2009
と出力されるのを応用したんですよ。


62 :デフォルトの名無しさん:2009/06/29(月) 00:43:57
応用というより妄想だよ。できない。

63 :デフォルトの名無しさん:2009/06/29(月) 00:45:01
>>62
じゃあどうやったらバッチファイルで短くファイル名を変えることが出来ますか?


64 :デフォルトの名無しさん:2009/06/29(月) 00:48:15
応用しろ

65 :デフォルトの名無しさん:2009/06/29(月) 00:53:02
>>64
わかんないだけだろw


66 :デフォルトの名無しさん:2009/06/29(月) 07:59:47
>>63
ファイル名を環境変数に入れれば、その環境変数を >>61 みたいにすることはできる。
>>58 みたいに for ループの中で使うのなら、遅延環境変数の設定が必要。
しかし、先頭 4 文字だけだと、同じ名前になることがあるのでは ?

67 :デフォルトの名無しさん:2009/06/29(月) 09:33:18
>>66
的確なアドバイスありがとうございます

確かに先頭4文字だけだと同じ名前になってしまいますね。
ここにさらに連番にするというものをつくって解決させたいと思います
この単一バッチファイルでかのうでしょうか?

68 :デフォルトの名無しさん:2009/06/29(月) 09:54:56
>>67
番号のみを環境変数で保持すればよいのではないだろうか。
for ループ内で set /a num += 1 などとして、連番で増やしていく。
必要なら「短いファイル名」と「連番」を連結して、新しいファイル名にすれば
いいと思うけれど、いっそのこと「連番」だけでもいいのでは ?
いずれにしても、ひとつのバッチファイル内で可能。

69 :デフォルトの名無しさん:2009/06/29(月) 11:55:07
以前見たのですが、batファイルのテトリスがあったのですが
どなたかご存知の方いませんか?

70 :デフォルトの名無しさん:2009/06/29(月) 13:00:01
>>68
なるほど、ありがとうございます

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

でコマンドを走らせたのですがなかなかうまくいきません。
どこがおかしいのでしょうか?

71 :デフォルトの名無しさん:2009/06/29(月) 13:41:18
全部

72 :デフォルトの名無しさん:2009/06/29(月) 14:03:59
>>71
わかならい人は黙っててください^^;


73 :デフォルトの名無しさん: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

74 :デフォルトの名無しさん:2009/06/29(月) 14:14:22
>>73
さきほどは失礼なことを言って申し訳ありませんでした

75 :デフォルトの名無しさん:2009/06/29(月) 14:18:08
>>73
あ、でもなんだかコマンドの構文が間違っていますってでました・・


76 :デフォルトの名無しさん: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 に正しく値が代入されてないみたいでした。
これは環境変数の問題なんですかね?


77 :デフォルトの名無しさん:2009/06/29(月) 14:46:25
それネタだから

78 :デフォルトの名無しさん:2009/06/29(月) 14:49:33
>>77
あ?もういっぺん言ってみろや
ふざけんなマジで


79 :デフォルトの名無しさん:2009/06/29(月) 14:58:40
>>77
お前いい奴だな
ありがとう
いい夢見れるわ


80 :デフォルトの名無しさん:2009/06/29(月) 19:08:54
>>69
16bitのMS-DOSならエスケープシーケンスやBATKEYを使えば作れるかもしれない。
cmd.exeだけじゃむずかしいだろう。

81 :デフォルトの名無しさん:2009/06/30(火) 21:37:54
powershellならあるんじゃないか

82 :デフォルトの名無しさん:2009/07/01(水) 00:20:30
任意のバッチでエコーされた結果をテキストに保存したいとき

hoge.bat > log.txt

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

出力されたテキストを後からtypeするだけだと、
>入力を求めたりする
ときなど、当然ながら期待した動作になりません

83 :デフォルトの名無しさん:2009/07/01(水) 02:38:33
そのバッチファイル内で個別に> >>してけば

84 :デフォルトの名無しさん:2009/07/01(水) 02:44:11
echo 常にコンソールに出力したい>con

85 :デフォルトの名無しさん:2009/07/01(水) 20:43:55
>>82
意味判らんがteeみたいのがほしいってこと?

86 :デフォルトの名無しさん:2009/07/01(水) 23:02:17
コンソールログじゃないの

87 :デフォルトの名無しさん:2009/07/01(水) 23:32:56
>>83
呼び出される側(実際にコンソールへ文字を出力しているバッチ)は
いじらない方法で実現したいのです

>>85-86
そんなかんじです。

88 :デフォルトの名無しさん:2009/07/02(木) 00:37:27
無理

89 :デフォルトの名無しさん:2009/07/02(木) 01:01:55
>>87
localhostにtelnetしてログを採取w

90 :デフォルトの名無しさん:2009/07/02(木) 01:27:55
バッチ駆使するとteeみたいなことはできるのですが、
コンソールログはなかなか上手い方法が見つからないです…
いったんパイプすると、出力色情報とか消えちゃうんですよね…

>>89
それはww

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



92 :デフォルトの名無しさん:2009/07/02(木) 22:05:21
>>91
""でくくってコマンドラインに渡してる?

93 :デフォルトの名無しさん:2009/07/02(木) 22:08:25
<>"半角スペースは入ってないんだよな
その質問からは適切な答えは出てこないだろう

94 :デフォルトの名無しさん:2009/07/03(金) 01:33:30
ファイル名が長すぎるという可能性もある。

95 :デフォルトの名無しさん:2009/07/03(金) 03:23:36
全角空白がある
""でくくれ

96 :53:2009/07/03(金) 07:09:25
悪阻レス、スマソ・・・レスありがとうさんです。

>>54
cmd.exe経由で呼び出すのはお手軽でいいですね
表示はどうなるんだろ?おなじコンソールでは出力されるのだろうか?
試してみないと…

>>55
setlocal しらんかった( ´д`)
バッチファイル内の環境変数の変更を一時的なものにできるんですね。
バッチファイル内で使うと、最後に到達した時に元の設定が復元される、ということみたいですね。ということは、endlocalは要らないのか。

setlocal,endlocal - コマンドプロンプトを使ってみよう! −バッチファイル−
http://ykr414.com/dos/dos05.html#09

setlocalとendlocal
http://www.confrage.com/dos/batch-grammar/setlocal_endlocal/setlocal_endlocal.html


>>56
pushd,popdでディレクトリ情報をスタックできるんですね。すっかり存在を忘れてた…


レスしてくれた人ありがとう!試してみます!

97 :デフォルトの名無しさん:2009/07/03(金) 13:36:17
>96
つわりレス…?

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

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

とかやると、括弧内の%変数%は括弧内を実行する前に全て展開されるので
endlocal後に改めてAに同じ内容が入り、引き継げることになる

98 :デフォルトの名無しさん:2009/07/04(土) 01:31:49
vistaで、PCの日付と時刻を一定の年数戻したい場合はどう書けばいいでしょか?

99 :デフォルトの名無しさん:2009/07/04(土) 01:42:07
めんどくせぇ

100 :デフォルトの名無しさん:2009/07/04(土) 01:45:43
たのんます

101 :デフォルトの名無しさん:2009/07/04(土) 03:13:43
継続使用したいならバイトしてちゃんと金払え

102 :デフォルトの名無しさん:2009/07/04(土) 10:59:28
>>98
xpはできるけどビスタは理論上できない。

103 :デフォルトの名無しさん:2009/07/04(土) 11:11:33
どんな理論?

104 :デフォルトの名無しさん:2009/07/04(土) 11:52:58
ぐぐりまくれ

105 :デフォルトの名無しさん:2009/07/06(月) 12:09:38
>>76
%%iを"%%i"として渡せばいける

for %%i in ("%homedrive%%homepath%\hoge\*.jpg") do call :fuga "%%i"

106 :デフォルトの名無しさん:2009/07/06(月) 12:19:31
>>92-95

107 :デフォルトの名無しさん:2009/07/09(木) 01:36:18
XP SP2で

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

としたバッチファイルを実行すると無限ループしてしまうのですが、なぜでしょうか。
/vオプションや/t, /d, /fオプションをつけてもループしてしまいます。
コマンドプロンプトで直接打てばエラーはでません。


108 :デフォルトの名無しさん:2009/07/09(木) 02:14:08
reg.cmd

109 :デフォルトの名無しさん:2009/07/09(木) 02:24:52
>>108
ありがとうございます!
reg.exe addとしたらできました!


110 :デフォルトの名無しさん:2009/07/09(木) 13:37:02
>>107-109
エスパーってほんとにいるんだな…

111 :デフォルトの名無しさん:2009/07/09(木) 23:42:21
>>107-109
理解するのに数秒かかった
超納得。

112 :デフォルトの名無しさん:2009/07/10(金) 19:38:13
regを呼ぶバッチファイルにreg.cmd(か.bat)って名前付けたのかw

113 :デフォルトの名無しさん:2009/07/10(金) 22:04:02
そういうことかw

1日以上悩んでわからなかったorz

114 :デフォルトの名無しさん:2009/07/10(金) 22:16:30
それはちょっとやばいのでは

115 :デフォルトの名無しさん:2009/07/10(金) 23:28:47
FAQだろ。
ここでも3回以上同じ質問見たぞ。

116 :デフォルトの名無しさん:2009/07/11(土) 01:03:36
まだわからない俺はどうしたらいいんだろう

117 :デフォルトの名無しさん: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待ちなんですけど…」

118 :デフォルトの名無しさん:2009/07/11(土) 15:47:22
なにそれきもい

119 :デフォルトの名無しさん:2009/07/11(土) 16:57:01
昔、Unixで罠にはまったのを思い出したわ。
cc -o test test.c で作ったtestコマンドがなぜか動かないという、真逆の問題だがなw

120 :デフォルトの名無しさん:2009/07/11(土) 17:07:16
おれもw
unixでpathの先頭にカレントディレクトリを追加しとくと
なんかセキュリティがどうのこうので、まずいんだっけ?

121 :デフォルトの名無しさん:2009/07/11(土) 17:25:20
/bin/testが実行されたのか・・・そりゃはまるわw

122 :デフォルトの名無しさん:2009/07/11(土) 20:30:36
>>120
パスの先頭がカレントディレクトリだったらsuトロイを置きまくるぜ

123 :デフォルトの名無しさん:2009/07/11(土) 22:01:50
あ、それだ。たしかlsみたいなファイル名でトロイを作るんだよね

124 :デフォルトの名無しさん:2009/07/11(土) 22:30:26
echo.cmd

125 :デフォルトの名無しさん: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(
のところに構文エラーがでるんですが

126 :デフォルトの名無しさん:2009/07/13(月) 22:31:27
z:\bat(
が存在しない

127 :デフォルトの名無しさん: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? )
となってしまい何も起きないんですがどうしてでしょうか




128 :デフォルトの名無しさん:2009/07/13(月) 22:42:49
すいませんG:\のところはz:\だと思ってください

129 :デフォルトの名無しさん:2009/07/13(月) 22:48:02
>何も起きないんですがどうしてでしょうか
もう一度実行して確認

130 :125:2009/07/13(月) 22:56:19
z:\batが無い状態で実行してもにz:\batは作成されず、
z:\batがある状態でやってもtest03.batがz:\batに移動されません。
どうしてでしょうか?一応文はあっているのでしょうか?


131 :デフォルトの名無しさん:2009/07/13(月) 23:06:59
昔、Unixで罠にはまったのを思い出したわ。w
testコマンドがなぜか動かないという
あれ?何で反応がないんだろう
っと…ああ、これか

132 :デフォルトの名無しさん:2009/07/13(月) 23:13:59
それはちょっとやばいのでは

133 :デフォルトの名無しさん:2009/07/14(火) 00:49:27
>>127
バッチファイルにすればよい

134 :デフォルトの名無しさん:2009/07/14(火) 03:52:31
More? って何だ?

135 :119:2009/07/14(火) 05:47:27
>>131
つまらん。

136 :デフォルトの名無しさん:2009/07/14(火) 05:59:07
お前の話はつまらん

137 :デフォルトの名無しさん:2009/07/14(火) 10:04:14
>>119
>>131
>>135

ひでぇw

138 :デフォルトの名無しさん:2009/07/14(火) 12:32:13
こんな過疎すれでも3人いるってことは
自作のtestコマンドを作ってはまったやつが世界中で10万人はいるにちがいない

139 :デフォルトの名無しさん:2009/07/14(火) 14:27:05
自作のcalプログラムで嵌った経験ならあるぞ。
プロジェクトの名前がcalなんだからぁしょうがないw

140 :デフォルトの名無しさん:2009/07/14(火) 15:52:15
reg.cmd話をdoskeyマクロ話に焼き直そうとしたら、
バッチでdoskeyマクロが使えなくて、落ちがつけられなくなったんだろ

141 :デフォルトの名無しさん: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コマンドでタスク作成してもうまくタスクが起動しません!
どうしたら良いでしょうか?

142 :デフォルトの名無しさん:2009/07/18(土) 13:55:13
すいません付け加えます。
このバッチファイル名のファイル名は reboot.bat です。

143 :デフォルトの名無しさん:2009/07/21(火) 22:40:29
find "文字列" hoge.txt を bat 内に記述して検出したあと、
if の条件判断の方法が思いつきません。
ご教示ください。

144 :デフォルトの名無しさん:2009/07/21(火) 23:28:06
if errorlevel 1

145 :デフォルトの名無しさん:2009/07/22(水) 00:44:27
>>144
thx、助かりました。

146 :107:2009/07/27(月) 22:23:00
その節はエスパーの方ありがとうございました。
ファイル名まで書けばほとんどの方が気づいてくれたのでしょうけど。
気づかなかった自分が穴があれば入りたいほど恥ずかしかったです。

>>116
今更ですが、念のため書きます。>>112が原因です。
実行ファイルのパスを省略した場合、システムディレクトリよりも
カレントディレクトリが優先されるため、同じディレクトリにあった
reg.batを呼び出してしまっていたのです。

147 :デフォルトの名無しさん:2009/07/28(火) 02:51:52
.urlで再帰するとエクスプローラが死ぬよ

148 :デフォルトの名無しさん: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

何この副ストリームの微妙な対応っぷり
書き込みオンリーじゃ意味ねぇ

149 :デフォルトの名無しさん:2009/08/03(月) 09:17:13
>>148
more < fukust.txt:memo.txt


150 :デフォルトの名無しさん:2009/08/03(月) 14:15:35
notepad fukust.txt:memo.txt

151 :デフォルトの名無しさん:2009/08/04(火) 12:34:57
こんにちは。
インターネット上のテキスト(html)を取得することはできますか?
telnetとか見つけたんですが、ちょっと違う??

152 :デフォルトの名無しさん:2009/08/04(火) 14:36:05
powershell -command "(New-Object System.Net.WebClient).DownloadString('http://www.bing.com')"

153 :151:2009/08/04(火) 21:46:32
>>152
ぐ・・・powershell というのは、DOSとは違うものですね?
やっぱDOSでは無理でしょうか。
でもヒントありがとうございます。

154 :デフォルトの名無しさん:2009/08/04(火) 22:01:28
psインストールしてdosから呼べばいいんだよ。
どうしてもコマンドがいいならwgetなんてのもあるけど結局別途インストールが必要。

155 :151:2009/08/04(火) 23:24:50
>>154
なるほど、wgetなら聞いたことがあるのでそっちでやってみます。
インストールといってもコピーするだけなんですね、できそうかも。
どうもありがとう。

156 :デフォルトの名無しさん: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です。

157 :デフォルトの名無しさん:2009/08/05(水) 21:20:45
%i -> %%i

158 :156:2009/08/05(水) 21:28:17
dd

159 :デフォルトの名無しさん:2009/08/07(金) 14:16:38
call省く方法ってないの?
.bat, .cmdとその他を区別して呼び出すのがだるすぎるぜ

160 :デフォルトの名無しさん:2009/08/07(金) 14:56:34
区別せず、いつもCALL使えばええがな

161 :デフォルトの名無しさん:2009/08/07(金) 14:58:37
関連付けにcmd /c付ければええがな

162 :デフォルトの名無しさん: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


163 :デフォルトの名無しさん:2009/08/07(金) 19:38:07
そのスレ、何回かバッチ出てるね

164 :デフォルトの名無しさん:2009/08/07(金) 21:18:28
>>163
thx!本当だw

見直してたら、もう少し洗練出来る事に気が付いた。


165 :デフォルトの名無しさん:2009/08/07(金) 21:22:49
【海外】中国・山西省の病院で陰茎が二本ある男の子が生まれる。[8/6]★part2
http://schiphol.2ch.net/test/read.cgi/parksports/1217581664/l50

166 :デフォルトの名無しさん:2009/08/13(木) 14:57:11
aaa.exeとbbb.exeをパラに実行してどっちかが終わったらccc.exeを実行
ってどう書けばいい?

167 :デフォルトの名無しさん: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


168 :デフォルトの名無しさん:2009/08/17(月) 00:14:28
offlineで使えないよ

169 :デフォルトの名無しさん:2009/08/17(月) 16:40:27
ドラッグ&ドロップでJavaを実行できるファイルを作りたいんですけど

javac %~n1.java
java %~n1
pause

これだとディレクトリがC:\WINDOWSでファイルが見つかりません
.javaファイルがあるディレクトリか,バッチファイルがあるディレクトリに
移動するにはどうすればいいでしょうか

170 :デフォルトの名無しさん:2009/08/17(月) 16:58:56
%0

171 :デフォルトの名無しさん:2009/08/17(月) 17:14:31
あぁ %~n1 ←これの意味分からずに使ってるのかw

172 :デフォルトの名無しさん:2009/08/17(月) 17:21:01
できました^^
cd %~dp0

173 :222.248.109.70:2009/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/
にて自動焼人 ★までご連絡ください

174 :デフォルトの名無しさん:2009/08/20(木) 15:23:16
renで同じファイル名があった場合上書きすることはできませんか?

175 :デフォルトの名無しさん:2009/08/20(木) 15:34:00
moveコマンドなら上書きできる

176 :デフォルトの名無しさん:2009/08/20(木) 17:39:04
なるほど

177 :デフォルトの名無しさん:2009/08/21(金) 21:54:04
あるフォルダの指定サイズ以下をファイルのみを隠しファイルにするにはどう組めば良いでしょう?
わかるかたいましたらよろしくお願いします。

178 :デフォルトの名無しさん:2009/08/21(金) 22:35:49
for
dir
if
%~zi
attrib

179 :デフォルトの名無しさん:2009/08/22(土) 06:11:21
それは本当に隠しファイルにする必要があるのか?
どういう用途に使うんだろう、と言ってみる

180 :デフォルトの名無しさん:2009/08/22(土) 13:50:21
ネットワークドライブをマウントさせるバッチファイルを作りたいのですが、

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

といった形にしたいのですが、どう組めばいいでしょうか?


181 :デフォルトの名無しさん:2009/08/22(土) 14:17:08
リストの行を読み込むごとに、行番号が付いた変数をつけ続けることはできますか?
10行のリストを読んだら、var1からvar10までの変数を生成して欲しいのですが


182 :デフォルトの名無しさん: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!


183 :デフォルトの名無しさん:2009/08/22(土) 20:22:45
>>178
ありがとうございます。
もうちょいヒント下さい。。。

184 :デフォルトの名無しさん:2009/08/22(土) 21:27:09
for
dir /?
if /?
attrib /?


185 :デフォルトの名無しさん:2009/08/25(火) 04:05:54
>>141
これ危なくないか?XP専用のようだけど

186 :デフォルトの名無しさん:2009/08/26(水) 23:51:11
echoに色つけるcechoと一文字読み取ってerrorlevelに返すreadkey作ったらいろいろ便利になった。
これでcmd&rubyであと5年は頑張れる。
PowerShellからは脱落したぜ…

187 :デフォルトの名無しさん:2009/08/27(木) 00:20:23
いらねー

188 :デフォルトの名無しさん:2009/08/27(木) 13:07:04
>>181-182です
リストの行ごとに番号を振るところまでできたんですが、
仮に9行目を得たいときは!line9!で呼び出すとして、
数字の部分はランダムで変えたいときはどうすればいいんでしょうか

set r=(ランダムな数字)
echo line!r!でline5なりline9なりで行の内容を呼び出したい
data=line!r!とする?
こんがらがってわけがわかりません
お知恵を貸してください

189 :デフォルトの名無しさん:2009/08/27(木) 14:03:43
>>188
ズバリ%RANDOM%がある。
範囲を1〜10にしたいなら
set /a r=%RANDOM % 10 + 1
のようにすればおk


190 :デフォルトの名無しさん: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!

191 :デフォルトの名無しさん:2009/08/27(木) 19:23:18
prompt文字列を使って特殊文字をファイルに吐き出す方法って
どうやるんだっけ?

192 :188:2009/08/27(木) 21:58:37
>>189
んー11しか出ないです

>>190
はーできました、ありがとうございます
set var!count!=〜とか!var%r%!ていう書き方もできるんですね、ここでつまづいてました
r=%RANDOM% %% count + 1の%%とは何でしょうか?


193 :デフォルトの名無しさん:2009/08/27(木) 22:33:48
% をエスケープしてる

194 :デフォルトの名無しさん:2009/08/27(木) 23:53:57
引数列挙って
for %%i in (%*) do echo %%i
で行けるのな。今までshift, if, goto で頑張ってたよ…

195 :デフォルトの名無しさん:2009/08/28(金) 01:45:53
>>186
わざわざ作らんでも
>echoに色つけるcecho
バッチでできるし
>一文字読み取ってerrorlevelに返すreadkey
Vistaにはchoiceがあるし

196 :デフォルトの名無しさん:2009/08/28(金) 08:23:19
choiceってVistaで復活したの?

197 :デフォルトの名無しさん:2009/08/28(金) 11:08:26
WinNT/2000/XPでは別売のリソースキットに収録されてるCHOICE.EXEを使うしかないけどな

198 :デフォルトの名無しさん:2009/08/28(金) 13:05:06
timeout入れるならsleep入れろよな>MS

199 :デフォルトの名無しさん:2009/08/28(金) 13:43:55
cat *.txt | sort
のつもりで
more *.txt | sort
ってやるとうまくいかないんだけど、どうすりゃいいの?

200 :デフォルトの名無しさん:2009/08/28(金) 13:49:30
なぜmoreを使う
cat ファイル名 相当なら type ファイル名 だろ

201 :デフォルトの名無しさん:2009/08/28(金) 13:54:36
typeもだめ

202 :デフォルトの名無しさん:2009/08/28(金) 17:21:53
ならばcat.batを作ればいい

------------ cat.bat
@echo off
for %%i in (%*) do type %%i

203 :デフォルトの名無しさん:2009/08/28(金) 22:11:17
>199
もしかして「.txtと拡張子のつく各ファイルを、ソートして表示」…しようとしてそのコマンドを書いたのか?

204 :デフォルトの名無しさん:2009/08/28(金) 22:54:01
>>203
やりたいことは
sort *.txt
だけど、Winのsortが
sort *.txt
できないので、その代替

>>202
それしかなさそう
たしかに
cat *.txt | sort
の代替になるけど、
sort *.txt
の代替にはならないみたい
ファイル末に改行がないと、行が継続されちゃう
あーやんなっちゃう

205 :デフォルトの名無しさん:2009/08/29(土) 00:31:29
常に開業されちゃうけどこういうのは?
for ... do (
  type %%i
  echo.
)

206 :デフォルトの名無しさん:2009/08/29(土) 04:32:18
dir /b *.txt | sort

207 :名無しさん@そうだ選挙に行こう:2009/08/30(日) 17:10:19
for /f "delims=" %%i in (*.txt) do echo %%i

208 :名無しさん@そうだ選挙に行こう:2009/08/30(日) 17:32:19
for /f delims^=^ eol^= %%i in (*.txt) do echo %%i


209 :デフォルトの名無しさん: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)がねーよ

210 :デフォルトの名無しさん:2009/08/31(月) 16:15:44
set path_

211 :デフォルトの名無しさん:2009/09/01(火) 23:12:07
バッチでできる?
http://pc12.2ch.net/test/read.cgi/software/1250213672/766

212 :デフォルトの名無しさん:2009/09/02(水) 00:07:13
一行が凄く長くなければ。

213 :デフォルトの名無しさん:2009/09/06(日) 14:51:37
>>207-208
うごかねーよ

214 :デフォルトの名無しさん:2009/09/06(日) 15:43:59
あ、ホントだ。。

215 :デフォルトの名無しさん:2009/09/10(木) 00:55:29
○○.bat 16:00 テレビの時間

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

こういうのってどうやればできますか?

216 :デフォルトの名無しさん:2009/09/10(木) 01:14:17
atとVBSのMsgBoxを使えば出来そうだけど
vectorあたりでスケジューラ探してきた方が早くね?

217 :デフォルトの名無しさん: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

218 :デフォルトの名無しさん:2009/09/10(木) 12:37:02
nul はDOS窓
null がコマンドプロンプト

219 :119:2009/09/10(木) 16:14:29
>>218
(゚Д゚)ハァ?

220 :デフォルトの名無しさん:2009/09/10(木) 21:06:16
notepad.exe テレビの時間.txt

221 :デフォルトの名無しさん:2009/09/10(木) 22:25:47
>>215

@echo off
at.exe %1 /interactive mshta.exe "about:<h1>%*</h1>"

222 :デフォルトの名無しさん:2009/09/11(金) 01:30:58
>>221
mshta.exe "about:<h1>***</h1>"
これはおもろいな

223 :デフォルトの名無しさん:2009/09/11(金) 13:33:48
@echo off
at.exe %1 /interactive msg.exe * %2


224 :デフォルトの名無しさん:2009/09/11(金) 15:23:27
msgってうちのVistaには無いんだよな

225 :デフォルトの名無しさん: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

226 :デフォルトの名無しさん:2009/09/11(金) 16:52:52
Outlook+cron最強

227 :デフォルトの名無しさん:2009/09/12(土) 03:41:31
REM メッセージボックス テスト用.vbsファイル
Option Explicit
Dim k
k = MsgBox("( 現在の日時 " & Now & " )" & vbCrLf & vbCrLf & "まだ午前3:40すぎですが、起きますか?", 289, "メッセージテスト")
WScript.Quit(k)

228 :デフォルトの名無しさん:2009/09/12(土) 13:14:15
WSHスレでもないのにVBS…だと?

229 :デフォルトの名無しさん:2009/09/12(土) 13:22:36
バッチファイルで%1のアクセス日時を取得したいのですがどうすればいいのでしょうか?

230 :デフォルトの名無しさん:2009/09/12(土) 13:34:42
dir/?

231 :デフォルトの名無しさん:2009/09/12(土) 13:41:40
勘違いしていました、dirを見直し作成すると出来ました!

232 :デフォルトの名無しさん:2009/09/12(土) 14:02:17
>>227
そこは vbCrLf でなく vbLf を使え
vbCrLf だと cr+cr+lf になるぞ

233 :デフォルトの名無しさん:2009/09/12(土) 14:17:01
>>228
REM:&@CScript.exe //E:VBS //NoLogo "%~f0" %* & GOTO :EOF
にすればよかろう

234 :デフォルトの名無しさん: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

235 :デフォルトの名無しさん:2009/09/12(土) 15:56:13
mshta.exe "about:<marquee>テレビの時間</marquee>"


236 :デフォルトの名無しさん:2009/09/12(土) 19:12:36
>>232
はにゃ?

237 :デフォルトの名無しさん:2009/09/12(土) 19:20:24
>>236
はにゃ?知らんと?
CTRL+Cしてメモ帳に貼り付けて保存a.txt
バイナリで改行コードを調べてみ
そうか
for /f %a in (a.txt) do echo [%a]
でもわかるが

238 :デフォルトの名無しさん:2009/09/12(土) 19:34:01
mshta.exe vbscript:close(Msgbox("テレビの時間"))

239 :デフォルトの名無しさん:2009/09/12(土) 20:22:26
mshta.exe javascript:alert("テレビの時間");close()

240 :デフォルトの名無しさん:2009/09/12(土) 21:06:26
mshta.exe javascript:"テレビの時間"

241 :デフォルトの名無しさん: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>

242 :デフォルトの名無しさん:2009/09/13(日) 04:20:02
メッセンジャーサービスが動いている前提なら、net send %computername%で自分自身にメッセージ送るのがお手軽じゃけん。

243 :デフォルトの名無しさん:2009/09/14(月) 23:44:49
forでdelims=に羅列した文字を区切り文字にしますが、
eol=に羅列して複数文字を無視判定文字にすることはできないのですか?

244 :デフォルトの名無しさん:2009/09/15(火) 01:08:00
for /f "eol=b" %y in ('for /f "eol=a" %x in ( ) do echo %x') do echo %y

245 :デフォルトの名無しさん:2009/09/15(火) 14:43:45
delimS Sがあるだろ?
eolS? Sがないだろ?

246 :デフォルトの名無しさん:2009/09/15(火) 23:53:36
はい

247 :デフォルトの名無しさん:2009/09/19(土) 00:49:53
forで"delims="で区切り文字をなしにしますが、
"eol="で無視判定文字をなしにすることはできないのですか?

248 :デフォルトの名無しさん:2009/09/20(日) 21:46:12
はい

249 :デフォルトの名無しさん:2009/09/23(水) 21:47:14
>>241 がうまく動かない。青い小さなウィンドウが開くだけ

250 :デフォルトの名無しさん:2009/09/23(水) 22:19:23
>>249
>>215のように
○○.bat 16:00 テレビの時間
のように起動してる?

251 :デフォルトの名無しさん:2009/09/23(水) 22:41:54
?

252 :デフォルトの名無しさん: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」のみです

253 :デフォルトの名無しさん:2009/09/24(木) 00:08:59
JOKEだとしても、面白くないよ

254 :デフォルトの名無しさん:2009/09/24(木) 12:15:28
<〜〜〜>(id="〜〜〜-XXX-〜〜")
 <name>〜〜〜</name>
 <file = "〜〜〜〜〜"/>
</〜〜〜>

255 :デフォルトの名無しさん:2009/09/24(木) 12:17:26
>>251>>254
何か言え

256 :デフォルトの名無しさん:2009/09/25(金) 00:47:07
やま

257 :デフォルトの名無しさん:2009/09/25(金) 08:11:41
だでんき

258 :デフォルトの名無しさん:2009/09/26(土) 10:32:02
べす

259 :デフォルトの名無しさん :2009/09/29(火) 01:12:38
シェルをバッチファイルへ置き換えてるんだが、
シェルのchmod 644 とか trap とか kill -HUP とか limitは
バッチでも処理可能ですか?

260 :デフォルトの名無しさん:2009/09/29(火) 01:24:50
どうぞ、
chmod.exe
trap.exe
kill.exe
limit.exe

261 :デフォルトの名無しさん:2009/09/29(火) 03:38:41
>>259が言うシェルって何シェルの事なんだろう?

262 :デフォルトの名無しさん:2009/09/29(火) 11:45:52
>>261
CSHだと思ってたんだが、拡張子がないから分からない…
すんません

263 :デフォルトの名無しさん:2009/09/29(火) 11:49:24
つーか、Windowsでlimitだとか再現する意味があるのかね。

264 :デフォルトの名無しさん:2009/09/29(火) 15:57:53
windowsでkill -HUPってなんだ? 

265 :デフォルトの名無しさん:2009/09/29(火) 19:16:39
アプリケーションのGUIを操作するコマンドってあるのでしょうか?


266 :デフォルトの名無しさん:2009/09/29(火) 20:50:47
cscript.exe
mshta.exe

267 :デフォルトの名無しさん:2009/09/29(火) 22:23:04
>GUIを操作

WScript.Shell#SendKeysみたいなもんの事?それとも>>266


268 :デフォルトの名無しさん:2009/09/29(火) 22:37:30
AppActivate.exe
SendKeys.exe

269 :デフォルトの名無しさん:2009/09/29(火) 23:46:35
バイナリで特定のアドレスだけでよいので変更するバッチはないですかね?

270 :デフォルトの名無しさん:2009/09/29(火) 23:55:04
なんて、説明したらよいのか、アプリをバッチファイルから起動したいのですが
TsSplitterというソフトなんですが、コマンドラインからも使えるのですが、なぜか処理がうまくいかなくて
GUIのものですとうまく起動するんです。
バッチファイルで起動まではできるのですが、そのあとの詳しい設定は前回履歴がのこっているので、
問題ありませんが、実行ボタンを手動で決定しなければなりません。
それをどうか自動処理できないかと四苦八苦している状態です。
お手数おかけしますが、もし可能であればお教えいただけるとありがたいです。


271 :デフォルトの名無しさん:2009/09/30(水) 01:47:47
>>270
UWSCとか
ttp://www.uwsc.info/


272 :デフォルトの名無しさん:2009/09/30(水) 09:35:28
>>269
それをバッチでやる理由は? 普通はバイナリエディタなりパッチツールを使うか、専用のパッチツールを作ると思うのだけど。

273 :デフォルトの名無しさん:2009/09/30(水) 12:27:16
debug

274 :デフォルトの名無しさん:2009/09/30(水) 14:10:22
>266
>267
できれば、>270のようにしたいと考えていますので
実行ボタンさえおせればいいのですが、、、どう組み込めばいいのでしょうか?


>271 少し私には理解できませんでした。
すいません。ありがとうございました。


275 :デフォルトの名無しさん:2009/09/30(水) 14:20:38
実行ボタンくらい自分で押せばいいじゃん。

276 :デフォルトの名無しさん:2009/09/30(水) 14:26:32
ぐぐりにいったら「他のキーワード」で「tssplitter バッチファイル」を提示された。
ちゃんと見てないが、色々バッチファイルを作っている人もいそうなのだけど、見てみたのかな?

277 :デフォルトの名無しさん:2009/09/30(水) 14:37:54
なにこいつ。

278 :デフォルトの名無しさん:2009/09/30(水) 17:35:21
>275それをいたっら、、、(笑)

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



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

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

私努力する気無いから私の知ってるやりかたで教えてね(はあと

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

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

…お前の次の台詞は「少し私には理解できませんでした」と言う…

281 :デフォルトの名無しさん:2009/10/01(木) 20:29:11
初歩的な質問ですいません

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

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

どなたか教えて頂けませんか

282 :デフォルトの名無しさん:2009/10/01(木) 23:25:34
できてるだろ?
ただ、そのコマンドラインは同じ名前に変えろと言ってるように見えるが?
なので変わらない。

283 :デフォルトの名無しさん:2009/10/02(金) 01:13:48
.bat_old.bat の左がxなら
ren *x.bat_old.bat *x_old.bat
でいくよ

284 :デフォルトの名無しさん: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
...

285 :デフォルトの名無しさん: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のみを削除する方法や
ワイルドカード指定してる所を変数に入れて処理する方法があれば教えていただきたいです

286 :デフォルトの名無しさん: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"
こんな感じ?

287 :デフォルトの名無しさん:2009/10/02(金) 14:27:06
for文変数のコピーは可能ですか?
下のようにしましたが動きませんでした


for %%i in (*.txt) do (
set k=%%i
echo %k%
)

288 :デフォルトの名無しさん:2009/10/02(金) 15:24:44
またこの質問か

289 :デフォルトの名無しさん:2009/10/02(金) 15:55:01
ren *.bat *_old.bat
とやってしまって、戻そうとしてんだろ?
やれやれだ
3段階で戻すんだな
ren *.bat_old.bat *.
ren *.bat_old *.
ren *. *_old.bat

290 :デフォルトの名無しさん:2009/10/02(金) 18:58:25
>>288
新入りなんだから、そんなこと言わずに歓迎してやれよ

291 :デフォルトの名無しさん:2009/10/02(金) 20:56:00
ren *.bat *_old.bat

ren *.bat *.
ren *. *_old.bat
とやればよかったのに

292 :デフォルトの名無しさん:2009/10/02(金) 20:57:03
>>287
ウェルかめ

293 :デフォルトの名無しさん:2009/10/03(土) 12:05:19
おまいら答もかいてやれよ

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

setlocal EnableDelayedExpansion
for %%i in 略
set k=%%i
echo !k!

294 :デフォルトの名無しさん:2009/10/03(土) 12:13:22
>>293
a!.txt
がどうなるか知ってるのか?

295 :デフォルトの名無しさん:2009/10/03(土) 12:24:47
>>294
これって解決方法あんの?

296 :デフォルトの名無しさん: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

297 :デフォルトの名無しさん:2009/10/03(土) 18:46:01
for %%i in (*.txt) do (
set k=%%i
setlocal EnableDelayedExpansion
echo !k!
endlocal
)

298 :デフォルトの名無しさん:2009/10/04(日) 13:59:14
for %%i in (*.txt) do (
set k=%%i
call echo %%k%%
)

299 :デフォルトの名無しさん: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

これを入れてもだめでした。どうしたらいいんでしょう?

300 :デフォルトの名無しさん: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

やりたいのは以上です。

301 :デフォルトの名無しさん:2009/10/05(月) 19:24:22
何の根拠もないてきとーレス

”で括ってみたら?

302 :デフォルトの名無しさん: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

やりたいのは以上です。

303 :デフォルトの名無しさん:2009/10/05(月) 21:00:06
たぶんアンダーバーが使えない

304 :デフォルトの名無しさん:2009/10/05(月) 21:10:23
アンダーバーをハイフンにするとうまくいくよ

305 :デフォルトの名無しさん:2009/10/05(月) 23:14:15
どういうこと?

306 :デフォルトの名無しさん:2009/10/06(火) 02:52:35
%0 にフルパスがはいらないこと以外はうまくいく
つーかそのパスなら -15,3 じゃないの

307 :デフォルトの名無しさん:2009/10/06(火) 03:20:23
ダブルクリック前提?

308 :デフォルトの名無しさん:2009/10/06(火) 10:44:20
フルパスは%~f0だしディレクトリ名欲しいだけなら%~n0でいいんじゃ


309 :デフォルトの名無しさん:2009/10/06(火) 11:15:16
いろいろどうもです。始めたばかりで変数の取り方もちょっとしか知りません
とりあえずアンダーバーは使えないと思って進めます。""でくくっても""が付くだけでした
%0と%~f0のどちらもいけます、中身はちょっと違いますが似てるのでOKです
%~n0はバッチファイルの名前が出てきてしまったので目的とは違いました

単にbatファイルのあるディレクトリの最初3文字を使って
同じディレクトリにあるファイルを結合させたいだけなんですが…('A`)


310 :デフォルトの名無しさん:2009/10/06(火) 12:03:29
>>309
ああすまん、%~n0は完全に私の勘違いでした

311 :デフォルトの名無しさん:2009/10/06(火) 14:13:42
なんでアンダーバーが使えないんだ?

312 :デフォルトの名無しさん:2009/10/06(火) 14:34:57
copy a+b c_d
使えるけど?

313 :デフォルトの名無しさん:2009/10/06(火) 15:11:01
そもそもcopyコマンドでどんなエラーが出たか書いてない時点で…
「うまくいきません」とだけ言われてもね…


314 :デフォルトの名無しさん:2009/10/06(火) 15:54:22
シンボリックリンクのリンク切れを判定して削除するバッチ希望

315 :デフォルトの名無しさん:2009/10/06(火) 21:16:55
シェルのショートカットのこといってんの?
バッチよりVBSのほうが早いな

316 :デフォルトの名無しさん:2009/10/06(火) 22:02:17
Vistaや7には、ショートカットでは無いシンボリックリンクが正式に存在するんだぜ
もっとも、それ以前から微妙に存在してたけどな

317 :デフォルトの名無しさん:2009/10/07(水) 00:55:57
>>299
>バッチフィル名「copy.bat」 
これは…

318 :デフォルトの名無しさん:2009/10/07(水) 01:38:29
だから何だ? 現象を説明できるのか?

319 :デフォルトの名無しさん:2009/10/07(水) 01:44:32
copy.bat祭りが始まったと聞いてやって来ますた。

320 :デフォルトの名無しさん:2009/10/07(水) 01:50:51
まユニークな名前を付けるべきではある

321 :デフォルトの名無しさん:2009/10/07(水) 01:57:53
短いファイル名を付けないようにすると %~snxI はどうなる?

322 :デフォルトの名無しさん:2009/10/09(金) 19:22:07
フォルダのシンボリックリンクとジャンクションの違いが分らん

323 :デフォルトの名無しさん:2009/10/11(日) 16:13:36
ユーザの下にジャンクションがあるが、ダブルクリックするとアクセスエラー
なんのためにあるんだ?

324 :デフォルトの名無しさん:2009/10/11(日) 17:37:25
ダブルクリックするとアクセスエラーになるのがジャンクション
ならないのがシンボリックリンクだにゃ
つまり、エクスプローラに見せたいか、見せたくないかだにゃ

325 :デフォルトの名無しさん:2009/10/12(月) 22:40:21
>>317
通常のdosコマンドだったら大丈夫だったはず。

regとかfindstrとかはアウトだけど。

326 :デフォルトの名無しさん:2009/10/13(火) 00:57:21
pingが通るか通らないかで分岐したいんですが
どうすればよいでしょうか?

327 :デフォルトの名無しさん:2009/10/13(火) 01:02:45
最近のWindowsに付属のものならErrorLevelで判断できる。

328 :デフォルトの名無しさん:2009/10/13(火) 01:12:41
>>325
同じ名前のコマンドとバッチ、どっちが先に処理されるかって事でしょ

329 :デフォルトの名無しさん:2009/10/13(火) 01:13:06
本当ですね。
ありがとうございました。

330 :デフォルトの名無しさん:2009/10/13(火) 21:17:50
>>328
だから通常コマンドならこっちがバッチより先。
copy.batとかmove.batとかは問題なし。

331 :デフォルトの名無しさん:2009/10/13(火) 21:58:26
通常じゃないコマンドってなんだよw
つーかカレントディレクトリにあるもの優先だろが

332 :デフォルトの名無しさん:2009/10/13(火) 22:08:53
C:\>おまいら用語を知らんのか?
'おまいら用語を知らんのか?' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

333 :デフォルトの名無しさん:2009/10/13(火) 23:42:37
用語を知ってるレベルになるとバッチなんか使わない

334 :デフォルトの名無しさん:2009/10/14(水) 00:26:04
>>326
ping www.google.com && echo succ || echo fail

335 :デフォルトの名無しさん:2009/10/14(水) 02:45:21
組み込みコマンドがexeやbatより優先されるのって、なんか慣れない。
パスで修飾とかできないから、そうせざるを得ないのは理解できるんだけどなあ。

336 :デフォルトの名無しさん:2009/10/14(水) 04:37:26
だからぁ優先されないって言ってんじゃん

337 :デフォルトの名無しさん:2009/10/14(水) 10:29:23
内部コマンド>カレントディレクトリの外部コマンド>パス上の外部コマンド

の順番だっけ?
初期からあるコマンドに内部コマンドと外部コマンドが入り交じってるのに
順番がこんなんだから解りにくいことになってるな

338 :デフォルトの名無しさん:2009/10/14(水) 12:13:20
ユーザ名の一覧が改行区切りで保存されたファイルがあります。
バッチを実行したユーザがそのファイルに存在したときのみ
それ以降の処理を行うようにしたいのですが、
どのように書けばよいでしょうか?
ユーザが存在するかどうかは
findstr "name" "\\server\Users.txt" /i /x"
にて判断できるかと思ったのですが
開くことができませんと表示されてしまいます・・・

339 :デフォルトの名無しさん:2009/10/14(水) 13:36:24
>>338
エラーメッセージに答えでてるじゃん
FINDSTR: 開くことができません (/i)
FINDSTR: 開くことができません (/x)


340 :デフォルトの名無しさん: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流

341 :デフォルトの名無しさん:2009/10/14(水) 17:02:19
<全角文字や半角スペース入り> DELAY <数字か-で始まる数字>ms.aac
ってファイル名から<数字か-で始まる数字>だけを取り出して変数にsetしたいのですけどよい方法はありますか?
DELAYの前に半角スペースが入ることもあるのでfor /fのdelims= では駄目でした

342 :デフォルトの名無しさん:2009/10/14(水) 17:04:26
途中で送信

343 :デフォルトの名無しさん:2009/10/14(水) 18:19:33
echo %hoge:*DELAY=%

344 :デフォルトの名無しさん:2009/10/14(水) 20:08:15
>>343
ありがとうございます
前後を置換して取り出せました

345 :デフォルトの名無しさん:2009/10/15(木) 14:12:52
ドライブの空き領域のみを表示させるにはどうすればよいでしょうか?

346 :デフォルトの名無しさん: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

347 :デフォルトの名無しさん: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

348 :デフォルトの名無しさん:2009/10/15(木) 18:51:40
wmic logicaldisk c: get freespace

349 :デフォルトの名無しさん: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


350 :デフォルトの名無しさん:2009/10/21(水) 18:22:39
ロボコップがコマンドコムの読み込み後にバイオスをロードしました

351 :デフォルトの名無しさん:2009/10/21(水) 18:35:42
romは遅いからramにコピーするんですね。普通です。

352 :デフォルトの名無しさん:2009/10/21(水) 19:30:22
rem

353 :デフォルトの名無しさん:2009/10/22(木) 10:47:15
コマプロからftpでunixにデータアップすると日付時間がかわる…
変えずにアップする方法ないかな…

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

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


ないか…

354 :デフォルトの名無しさん:2009/10/22(木) 10:55:58
>>353
フリーのftpクライアントと同じ戦略でいいじゃん。
あれは、サーバにアップロードした後シェル実行でタイムスタンプを強制しているだけなんだから。

355 :デフォルトの名無しさん:2009/10/22(木) 11:24:00
コマプロw

356 :デフォルトの名無しさん:2009/10/22(木) 11:37:21
メインフレーム業界に居る俺はコマプロと聞くとプロシージャのほうを連想してしまう…

357 :デフォルトの名無しさん: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;



358 :デフォルトの名無しさん:2009/10/22(木) 18:09:56
>>353
folder.copyhere
folderitem.modifydate
でだめか?

359 :デフォルトの名無しさん:2009/10/22(木) 19:28:35
>354->358
これから夜勤。仕事先のでためしてみるわ
ありがとう。

360 :デフォルトの名無しさん:2009/10/28(水) 22:21:25
> dir /s /b xxx
ファイルが見つかりません

このエラーメッセージを出さなくするのってどうやるの?
事前にあるかどうかをチェックするというのはなしで。

361 :デフォルトの名無しさん:2009/10/28(水) 22:37:24
dir /s /b xxx 2>nul

362 :デフォルトの名無しさん: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;


363 :デフォルトの名無しさん: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


364 :デフォルトの名無しさん:2009/10/28(水) 23:13:10

OSはWindows XP HomeのSP3です。

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

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

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

パスワード入力なしで、
一般ユーザからshutdownコマンドをバッチで実行する方法はありま
すか?


365 :デフォルトの名無しさん: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;


366 :デフォルトの名無しさん: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;


367 :デフォルトの名無しさん: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

ご存知の方教えてください。

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

本当は「キー押下状態の取得方法が分かりません」じゃないのか?

369 :デフォルトの名無しさん:2009/11/01(日) 16:45:31
わからないやつは黙ってろ

370 :デフォルトの名無しさん:2009/11/01(日) 17:42:07
標準のコマンドのみでは無理
DOS用だとbatuyとかあったけどWin用はしらん

371 :デフォルトの名無しさん:2009/11/01(日) 18:04:08
ttp://www.page.sannet.ne.jp/mtoga/etc/dos/bih-g_d2.htm
キー入力による分岐 ERRORLEVEL

ここらへん使えば出来そうかなぁと。
WinXPです。

372 :デフォルトの名無しさん:2009/11/01(日) 18:35:42
一から勉強して出直して来い

373 :デフォルトの名無しさん:2009/11/01(日) 18:40:31
三くらいからで勘弁してください


374 :デフォルトの名無しさん: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);

375 :デフォルトの名無しさん: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");
}
うまく出来ました。ありがとうございました。スレ違い失礼しました。

376 :デフォルトの名無しさん:2009/11/02(月) 23:17:03
>>370 標準のコマンドのみでは無理
そんなことはなかろう

377 :デフォルトの名無しさん:2009/11/03(火) 07:38:47
どうやるの?

378 :デフォルトの名無しさん:2009/11/03(火) 08:12:03
すまん勘違いだった

379 :デフォルトの名無しさん:2009/11/03(火) 14:39:20
せっかく解決済みなんだからほっとこーよ

380 :デフォルトの名無しさん:2009/11/03(火) 15:31:38
すまん余計なお世話だった

381 :デフォルトの名無しさん:2009/11/03(火) 16:08:05
>>364
タスクスケジューラを使えばできるよ

382 :デフォルトの名無しさん:2009/11/03(火) 17:04:12
質問してもよろしかったでしょうか?

バッチで標準入力がリダイレトされているか判定できましたでしょうか?

383 :デフォルトの名無しさん:2009/11/03(火) 20:00:57
はい

384 :デフォルトの名無しさん:2009/11/03(火) 22:39:51
foo.bat | bar.bar > baz.txt

foo, barが> baz.txtされてるかどうかを検出、分岐するってことなら無理だろ。

385 :デフォルトの名無しさん:2009/11/04(水) 00:21:16
>標準出力の話じゃないだろ。

386 :デフォルトの名無しさん:2009/11/04(水) 14:50:20
foo.bat | bar.bar > baz.txt
は知らんが
foo.bat > baz.txt

foo.bat | bar.bat
なら可能だろ。

387 :デフォルトの名無しさん:2009/11/04(水) 15:25:48
>質問してもよろしかったでしょうか?
過去に遡って質問するわけじゃないのだから、過去について聞くことは無意味だと思うのだが。

388 :デフォルトの名無しさん:2009/11/04(水) 15:36:16
過去から現在に渡ってよろしいことになっていたかどうかを聞いているので
問題なかろう。

389 :デフォルトの名無しさん:2009/11/04(水) 20:10:06
>質問してもよろしかったでしょうか?
という質問をした時点で、その質問は過去の事象で、その可否を聞いているのだろう

390 :デフォルトの名無しさん:2009/11/04(水) 20:20:16
うざ

391 :デフォルトの名無しさん:2009/11/04(水) 21:04:37
メモ帳(memo.exe)でテキストファイルを開くコマンドを書いたのだが、
バッチを実行するとメモ帳は開くがプロンプトが閉じない。

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

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



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

またお前か

393 :デフォルトの名無しさん:2009/11/04(水) 21:10:09
start

394 :デフォルトの名無しさん:2009/11/04(水) 21:16:20
>>393
ありがとう。
無事できました。

395 :デフォルトの名無しさん:2009/11/04(水) 22:04:18
うざ

396 :デフォルトの名無しさん:2009/11/05(木) 17:02:11
>>393
start バッチ
とやってみたのだが、閉じない。

397 :デフォルトの名無しさん: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になってしまいます。

どなたか教えてください。

398 :デフォルトの名無しさん: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

399 :デフォルトの名無しさん:2009/11/12(木) 00:20:18
>>398
ありがとうございます!できました!

enableextensionsでコマンド拡張機能を有効にしたからできるようになったってことですか?
コマンド追ってググったりしてもこの文でなぜできるのか理解できないです


400 :デフォルトの名無しさん:2009/11/12(木) 03:09:59
enabledelayedexpansionで遅延展開を有効にしたから
forの中でsetした変数(hensuu)が参照できるようになっている。
遅延展開が無効だと
if "%hensuu%"=="" の部分がfor実行段階で if ""=="" になって常に真ということになる。

401 :デフォルトの名無しさん:2009/11/12(木) 11:32:45
>>400

遅延展開を有効にすることでhensuu=test2にその時点でなるから、
if "%hensuu%"=="" には引っかからずにその時点でforを終了させられるという事ですね。
遅延展開についてよく理解できました。
わかりやすいレスありがとうございます。

402 :デフォルトの名無しさん:2009/11/12(木) 14:18:58
forが終了するわけじゃない。
hensuu=test2となった以降はifが偽になるため何も実行されずにループする。
test.txtの残りが凄く長ければそれだけ終了時間は伸びる

403 :デフォルトの名無しさん:2009/11/12(木) 18:50:55
>>402
てことは
test3は偽、よって実行なし
test4は偽、よって実行なし



って感じに最後の行になるまでされるわけですか。
だとしたら500行のtest.txtだとこれが500行分されるんですね・・・
やっと完全に理解できました。ありがとうございます


404 :デフォルトの名無しさん:2009/11/13(金) 22:26:52
そんな無駄なことせんでも

405 :デフォルトの名無しさん:2009/11/13(金) 22:28:31
for /f "skip=1" %%a in (test.txt) do set hensuu=%%a&goto x
:x


406 :デフォルトの名無しさん:2009/11/14(土) 00:03:56
遅延展開使わんでも
set hensuu=
for /f "skip=1" %%a in (test.txt) do if not defined hensuu set hensuu=%%a


407 :デフォルトの名無しさん:2009/11/15(日) 18:09:51
if 条件A or 条件B (
処理1
) else (
処理2
)

ここで「条件A or 条件B」と言う構文はバッチファイルでは使えないんでしたっけ?

408 :デフォルトの名無しさん:2009/11/15(日) 18:25:03
if/?

409 :デフォルトの名無しさん:2009/11/15(日) 21:19:54
>>408
解決しました。ありがとうございます。

410 :デフォルトの名無しさん:2009/11/16(月) 13:00:34
set or=
if 条件A set or=true
if 条件B set or=true
if defined or (
処理1
) else (
処理2
)

411 :デフォルトの名無しさん:2009/11/17(火) 17:10:49
more|notepad /dev/stdin
みたいなことはできないのですか?

412 :デフォルトの名無しさん: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が抜けた状態で作成されます。

何かいい方法は無いでしょうか。ご教示お願いいたします。

413 :デフォルトの名無しさん:2009/11/17(火) 23:40:05
こんな感じか?
echo echo start "" コマンド.bat "引数" ^>B.bat >A.bat

414 :デフォルトの名無しさん:2009/11/18(水) 01:08:33
>>413

当方412ではありませんが、感動しました。
^>を使えばそういう事ができるんですね
差し支えなければ、^のしくみを教えていただけないでしょうか?


415 :デフォルトの名無しさん:2009/11/18(水) 01:19:52
(^^)

416 :デフォルトの名無しさん:2009/11/18(水) 11:42:53
>>414
単なるエスケープ文字

417 :デフォルトの名無しさん:2009/11/18(水) 17:30:23
^^は^をエスケープしてるので
echo (^^)

(^)
となる

418 :412:2009/11/18(水) 20:00:18
>>413
レス遅くなって申し訳ないです。ありがとうございました!
ばっちり希望どおりの動作をしてくれるようになりました!

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

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

419 :デフォルトの名無しさん:2009/11/19(木) 22:15:12
bash とかでいうところの``で囲んだ時のような、コマンドの出力結果をコマンドラインオプションに回す文法はありませんか?

420 :デフォルトの名無しさん:2009/11/19(木) 23:41:46
for /f "usebackq" %I in (`dir /b`) do echo %I

421 :デフォルトの名無しさん:2009/11/20(金) 00:28:27
>>420
ありがとうございました

422 :デフォルトの名無しさん:2009/11/21(土) 01:56:20
usebackqはコマンド中に「'」を使う必要がある時に「'」の代わりに「`」を使うってオプションだろ?
for /f %i in ('dir /b') do echo %i
でいいのに何故わざわざusebackq付けんの?

423 :デフォルトの名無しさん:2009/11/21(土) 02:15:37
420じゃないけど常に usebackq 付けるようにした方が面倒な事考えなくて済む。

http://www.atmarkit.co.jp/fwin2k/operation/command008/command02.html


424 :デフォルトの名無しさん:2009/11/21(土) 16:02:45
好みだろ
どーでもいー

425 :423:2009/11/21(土) 16:20:50
>>424
そう、好み
てか昔ハマッたことがあるから、俺は付ける派

426 :デフォルトの名無しさん:2009/11/24(火) 13:26:23
外部プログラムを起動させるコマンドを実行すると
そのアプリが終了するまでbatへ制御が戻らないのですが
それを回避することは可能ですか?

427 :デフォルトの名無しさん:2009/11/24(火) 13:48:22
startコマンドを使う

428 :デフォルトの名無しさん:2009/11/24(火) 16:10:21
batファイルを分けることなく処理の優先順位を変更する方法があれば教えてください。

429 :デフォルトの名無しさん:2009/11/24(火) 18:57:10
startコマンドを使う

430 :428:2009/11/24(火) 19:10:35
>>429
start /b /low :exec ではうまくいきませんでした。
どのように記述すればいいのでしょうか?

431 :デフォルトの名無しさん:2009/11/24(火) 22:29:40
ところで
ttp://itpro.nikkeibp.co.jp/article/Windows/20051006/222374/
start /b test.bat
てどういう意味がある?
call test.bat
とは違うの?

432 :デフォルトの名無しさん:2009/11/25(水) 12:44:00
ウィンドウ開かないだけで、別プロセスのcmd.exeが立ち上がる…んだと思う。

433 :デフォルトの名無しさん:2009/11/25(水) 20:20:58
>>431
誰が書いたか知らんが、阿呆が意味も分らず、最初のオプション使って、無理矢理、使用例を作っただけなんだろ

434 :デフォルトの名無しさん:2009/11/25(水) 20:25:13
>>430
goto %1
start /low "" %0 :exec

435 :デフォルトの名無しさん:2009/11/27(金) 16:18:48
そういやstartって

start file
はokで
start "file"
はngな時があるけどどういう理屈なんだろうか

436 :デフォルトの名無しさん:2009/11/27(金) 16:27:01
理屈って言う程のことはないよ
start/?見りゃ自明だろ?

437 :デフォルトの名無しさん:2009/11/27(金) 16:32:00
>>430
wmiのsetpriorityを使え

438 :デフォルトの名無しさん:2009/11/27(金) 20:12:44
そんなこと言っても難しかろ
startにしとけ

439 :デフォルトの名無しさん:2009/11/29(日) 02:25:00
data.dat というファイルがあったとして、これを一日に一回
data1129.datみたいに日時をつけてバックアップとして保存していけるようなバッチファイル
作れる方いましたら教えてください

スタートアップに登録するとして、同日に一回でも度ってあったらコピーしないという仕様で

440 :デフォルトの名無しさん:2009/11/29(日) 03:40:36
if not exist data%date:/=%.dat copy /b data.dat data%date:/=%.dat

441 :デフォルトの名無しさん:2009/11/29(日) 13:46:20
プロンプト文字にerrorlevel出すにはpromptコマンドにどう書けばよい?

442 :デフォルトの名無しさん:2009/12/02(水) 15:20:51
これは、結局バッチスクリプトとは関係ないんですけど、copyコマンドでオプションに
/A(テキストモード)を指定しても、BOMありUTF-8のテキストファイルを結合すると
ファイルとファイルの間にBOMが残るんです。
現在はWinXPのコマンドプロンプトでしか試せないんですが、VistaやWin7なら、ちゃん
とBOMを外してくれますか?

443 :デフォルトの名無しさん:2009/12/02(水) 15:40:21
Vistaでやってみたが、入ってるね
/Aは改行コードしか見ないだろうから仕方がないかも

444 :デフォルトの名無しさん:2009/12/02(水) 15:44:42
あ、改行とEOFだったかな

445 :デフォルトの名無しさん:2009/12/02(水) 19:41:05
/A ASCII テキスト ファイルとして扱います。

UTF-8じゃないのに何言ってんだか

446 :デフォルトの名無しさん:2009/12/02(水) 19:50:38
/Aが改行をどうするって?

447 :デフォルトの名無しさん:2009/12/02(水) 21:49:14
COPY /8

448 :デフォルトの名無しさん:2009/12/03(木) 14:30:54
バッチスクリプトならできるが、関係ないな

449 :442:2009/12/03(木) 18:30:00
>>443
Vistaでも駄目ですか、どなたかWin7の状況を教えて下さい。

450 :デフォルトの名無しさん:2009/12/03(木) 20:27:40
逆に7でこの挙動が変わってたらおかしいでしょう

451 :デフォルトの名無しさん:2009/12/03(木) 20:43:06
別におかしくないが?

452 :デフォルトの名無しさん:2009/12/03(木) 20:46:19
chcp 65001

453 :デフォルトの名無しさん:2009/12/03(木) 21:15:54
BOM削除してからcopyすれば?

454 :デフォルトの名無しさん:2009/12/03(木) 21:54:01
ところで^Z削除するのはどうすれば?

455 :デフォルトの名無しさん:2009/12/04(金) 15:10:43
>>452
フォントを変えるコマンドは?

456 :デフォルトの名無しさん:2009/12/04(金) 21:47:30
ぐぐれ
まあ変えても解決にはならんが

457 :デフォルトの名無しさん:2009/12/04(金) 21:58:36
作れ
setconsolefont()
setcurrentconsolefontex()

458 :デフォルトの名無しさん:2009/12/08(火) 13:13:56
代替コマンドシェルにnyacusなんてのがあるんだな。
cmdと比べると構文が結構まともだ。
PowerShellより圧倒的に軽いしちょっと覚えてみる気になった。

459 :デフォルトの名無しさん:2009/12/09(水) 03:55:32
nyacus落ちない?数年前に使ったけど、それでやめた。

460 :デフォルトの名無しさん:2009/12/10(木) 01:06:30
今のところ落ちてないよ。まだ大した使い方してないけど。
最終更新日が先月でまだまだメンテが続いてるね。

461 :デフォルトの名無しさん:2009/12/11(金) 15:53:24
CMD.exeのfor文は頑張りすぎ

462 :デフォルトの名無しさん:2009/12/11(金) 18:23:45
runasの/trustlevelってどういうときに使うの?

463 :デフォルトの名無しさん:2009/12/11(金) 21:14:34
for /F %%a in (filelist.txt) do move "%%a" %dir%
filelist.txtにファイルの一覧をリストアップしてそのファイルをすべて特定のフォルダへ移動したいです
ですがファイル名に半角スペースが含まれていると移動されずにスルーされてしまいます
困ってしまいます
お願いします

464 :デフォルトの名無しさん:2009/12/11(金) 21:15:18
>>439
>>440
これの改良版で1週間分のみバックアップを残す仕様に出来る方おりませんか?
ファイルが7個以上あった場合、古いものから消していくようになると思うんですが

465 :デフォルトの名無しさん:2009/12/11(金) 21:25:48
>>463
"delims="

466 :デフォルトの名無しさん:2009/12/11(金) 21:32:10
>>464
for /f "skip=6 delims=" %%i in ('dir /b/o-d data*.dat') do del %%i

これで新しいものから順に6個を除いたファイルは全部消える

467 :デフォルトの名無しさん:2009/12/11(金) 21:33:20
>>465
ありがとうございました
助かりました

468 :デフォルトの名無しさん:2009/12/12(土) 11:52:30
カレントディレクトリを取得するのに

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

とかやってるんですが、もっとスマートな方法はないですしょうか?

469 :デフォルトの名無しさん:2009/12/12(土) 12:04:19
%CD%とかじゃ駄目だっけ?

470 :デフォルトの名無しさん:2009/12/12(土) 15:46:31
フルパスをゲットするなら%cd%でいい
c:\a\b\c\d\thisdir
のthisdirをゲットするなら
%cd:\=&set cdir=%
echo %cdir%
とか。

471 :デフォルトの名無しさん:2009/12/12(土) 19:32:42
set cdir=.

472 :デフォルトの名無しさん:2009/12/13(日) 03:10:06
set cdir=.
echo %cdir%
.

ダメじゃんw

473 :デフォルトの名無しさん:2009/12/13(日) 19:05:35
set cdir=%cd%
echo %cdir%

474 :デフォルトの名無しさん:2009/12/14(月) 11:07:38
%CD%なんてあったんですね。ありがとうございます。
カレントディレクトリがセットされた環境変数は ありそうだと思って
set<enter>して探したのですが、これにはでないみたいです。

「特殊な環境変数」でググると%CD%以外にもいろいろ知ることができました。


475 :デフォルトの名無しさん:2009/12/14(月) 14:11:28
set/?

476 :デフォルトの名無しさん:2009/12/14(月) 14:14:37
カレントディレクトリはドライブごとにある
echo %=c:%
echo %=d:%


477 :デフォルトの名無しさん:2009/12/14(月) 14:16:28
>>476
知らなかった・・・

478 :デフォルトの名無しさん:2009/12/14(月) 14:37:09
set,
で=*環境変数も表示

479 :デフォルトの名無しさん:2009/12/14(月) 14:40:28
2009年も終わろうとしてるのに今更cmdのtipsなんて何の意味がある。
PowerShellに乗り換えようぜ。

480 :デフォルトの名無しさん:2009/12/14(月) 15:50:56
=::=::\
は何?

481 :デフォルトの名無しさん:2009/12/14(月) 22:25:59
>>479
PowerShellがNTに載ったらね

482 :デフォルトの名無しさん:2009/12/15(火) 14:51:01
おまえらスレチガイ
http://pc12.2ch.net/test/read.cgi/win/1221046998/

483 :デフォルトの名無しさん:2009/12/21(月) 15:23:45
ipアドレスの3ブロック目で判断して、
レジストリを修正するバッチファイルが作りたいのです。

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

どなたかご教授願います。

484 :デフォルトの名無しさん:2009/12/21(月) 15:26:03
for /f "delims=. tokens=3" %I in ("1.2.3.4") do echo %I

485 :sage:2009/12/21(月) 16:36:18
>>484

素晴らしすぎます!!!
というか私の知識不足…頑張り不足…でしょうか。
ありがとうございました!

486 :483:2009/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%

ただ、スマートじゃないというかなんというか…。
こんなもんでしょうかね。

487 :デフォルトの名無しさん:2009/12/21(月) 22:05:22
tokens=14 ってなんじゃそら。
skip=n でn行飛ばせるって知ってるよな?

488 :デフォルトの名無しさん:2009/12/21(月) 22:55:04
出たか、知ったかぶり。お手並み拝見

489 :デフォルトの名無しさん:2009/12/22(火) 13:14:33
横からだけど俺的にはアリだな。
tokens=14 を数える事は二度と無いとしても、将来コピペで使い回した時、
このスレでのやりとりを良い思い出として生暖かく思い出せるw

"tokens=2 delims=:" だったら何も心に響かない。

490 :デフォルトの名無しさん:2009/12/22(火) 17:32:15
OSにもれなくついてくるおまけの機能に多くを求めてはいけない。
メモ帳やペイントに不満を感じるなら勝手に別のアプリをお使いくださいというのがMSの基本姿勢。
不便だろうが欠陥があろうが知ったことではない。

491 :デフォルトの名無しさん:2009/12/22(火) 17:47:03
delimsを.だけにすれば1行で書けるだろ?
for /f "tokens=?? delims=." %%I in ('ipconfig ^| find "IP Address"') do echo %%I
??は自分で数えろ

492 :デフォルトの名無しさん:2009/12/22(火) 18:26:46
skipがどうしたって?

493 :デフォルトの名無しさん:2009/12/22(火) 18:45:11
どんぐりの背比べ

494 :483:2009/12/22(火) 18:47:08
>>491
ありがとうございました。

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

でバッチリ取得出来ました。
これが一番スマートですね。助かりました!

495 :デフォルトの名無しさん:2009/12/22(火) 18:53:36
バッチごときでスマートって
しまむらで洋服買って自慢してるようなもんか

496 :デフォルトの名無しさん:2009/12/22(火) 20:09:54
すっぱい葡萄

497 :デフォルトの名無しさん:2009/12/22(火) 20:45:16
たぶん
for /f "tokens=15 delims=." %%I in ('ipconfig') do echo %%I
でもいける

498 :デフォルトの名無しさん:2009/12/22(火) 20:53:10
どんぐりの背比べ

499 :デフォルトの名無しさん:2009/12/22(火) 21:55:38
すっぱい葡萄

500 :デフォルトの名無しさん:2009/12/23(水) 14:33:10
skipがどうしたって?

501 :デフォルトの名無しさん: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
とやりたいです。

502 :デフォルトの名無しさん: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


503 :デフォルトの名無しさん:2009/12/26(土) 12:12:03
そこまで人の手でやれよ。

504 :デフォルトの名無しさん:2009/12/26(土) 12:17:13
写真を分類するソフトなら腐るほどある。

505 :デフォルトの名無しさん:2009/12/26(土) 12:57:24
ゴミの山(Dドライブ)を見てたらすんごいもの見つけたww

http://codepad.org/xzEwdV3R

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

今コンパイラ探してる

506 :デフォルトの名無しさん:2009/12/26(土) 13:04:17
#EXPAND BatchBasic

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

Sub Print(str)
  #NATIVE ECHO %str%
End Sub


507 :デフォルトの名無しさん:2009/12/26(土) 13:06:23
>>501
できるけど、その程度の代物だったら手作業と大して変わらん手間だろ。

508 :デフォルトの名無しさん:2009/12/26(土) 14:48:26
>>505
batに生産性を求めてどうする

509 :デフォルトの名無しさん:2009/12/26(土) 20:27:40
>>508
生産性がよくなるんだろ?

510 :デフォルトの名無しさん:2009/12/26(土) 22:38:09
管理者として実行されてるか?を判定するには?

511 :デフォルトの名無しさん:2009/12/27(日) 10:14:31
管理者権限でしかアクセスできないフォルダにアクセスしてERRORLEVELで調べる

512 :デフォルトの名無しさん:2009/12/27(日) 12:08:47
環境変数比較してみたら管理者権限の場合SESSIONNAMEが定義されてなかったので
それで判別できる? (Vista x64で確認)


513 :デフォルトの名無しさん:2009/12/27(日) 12:27:56
runas /trustlevel:制限しない rundll32 >nul
echo %errorlevel%

ちゃんと動くかは分からない

514 :デフォルトの名無しさん:2009/12/27(日) 14:35:24
echo>file
dir/q file

515 :デフォルトの名無しさん:2009/12/27(日) 15:01:58
mklink a a
echo %errorlevel%

516 :デフォルトの名無しさん:2009/12/27(日) 16:00:42
net user %username% |findstr "*administrators"

MS謹製のwhoamiに権限表示があった気がする

517 :デフォルトの名無しさん:2009/12/27(日) 17:58:10
>>516
UACの昇格

518 :デフォルトの名無しさん:2009/12/27(日) 22:26:55
>>512
Vista 32bit x86でも確認したよー

519 :デフォルトの名無しさん:2009/12/31(木) 18:56:58
rundll32 shell32,IsUserAnAdmin

520 :デフォルトの名無しさん: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+.... とやる方法です。

521 :デフォルトの名無しさん:2010/01/04(月) 20:39:55
http://codepad.org/w6ugNsAm

エスケープには対応してないから使えるのは英字だけなのでよろしく

522 :デフォルトの名無しさん: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%"
----------ここまで

細かい事考えなければこんな感じ?
引数を繋ぐスマートな方法を知りたいです。。。

523 :デフォルトの名無しさん:2010/01/04(月) 20:44:47
つか誰かHttpEscapeってサブルーチンでも作って

524 :522:2010/01/04(月) 20:48:01
>>521
そっか、先に shift させた方がずっと美しいや。
参考になりましたです。

525 :521:2010/01/04(月) 21:06:29
いや、スマートにするのは簡単だけど、

http://codepad.org/GKyUSzKv

なんかつまんないなあ。^^;

526 :522:2010/01/04(月) 21:15:25
>>525
これこれ、こーゆーの求めてました!

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



527 :520:2010/01/05(火) 00:22:01
>>521, 522
お二人ともありがとうございました。
特に >>525 が素晴しく、大変勉強になりました!!

528 :デフォルトの名無しさん:2010/01/05(火) 01:05:21
そもそもぐぐるなら置換不要

529 :デフォルトの名無しさん:2010/01/06(水) 18:02:19
そうなの?

530 :デフォルトの名無しさん:2010/01/10(日) 19:19:39
質問なんですが、
例としてimg001、img002、img003というファイルがあったとして
imgに当てはまるものを一気に削除するというスクリプトはあるでしょうか?

531 :デフォルトの名無しさん:2010/01/10(日) 19:36:16
delete img*

532 :デフォルトの名無しさん:2010/01/10(日) 19:47:41
>>531
erase img*

533 :デフォルトの名無しさん:2010/01/10(日) 20:56:26
>>531-532
「imgに当てはまるもの」→ del img

534 :530:2010/01/11(月) 01:04:30
>>531-533
ありがとうございます。
delの場合は del img*でいけました。

535 :デフォルトの名無しさん:2010/01/11(月) 01:16:52
>>531-533
おまえら質問に答えてない
>>530
だれかが作ればある

536 :デフォルトの名無しさん: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

537 :デフォルトの名無しさん: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%
----

538 :デフォルトの名無しさん: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

539 :デフォルトの名無しさん:2010/01/12(火) 18:41:21
for /f %%i in ('where %1') do start "" explorer.exe /select,%%i

540 :536:2010/01/13(水) 00:43:51
>>538, 539
どちらもすごいです!! たいへん勉強になりました。

541 :デフォルトの名無しさん:2010/01/13(水) 10:54:58
>>539
これのうち、 'where %1' の部分が良く理解できません。
解説のあるウェブサイトを紹介してもらえないでしょうか。

542 :デフォルトの名無しさん:2010/01/13(水) 13:14:07
http://www.atmarkit.co.jp/fwin2k/win2ktips/1151where/where.html

543 :デフォルトの名無しさん:2010/01/13(水) 23:29:11
>>542
やっと理解しました。where は OS のコマンドで、
また for /f in %%変数 (...) の括弧内ではコマンドが使えるのですね。
情報ありがとうございました。

544 :デフォルトの名無しさん:2010/01/14(木) 23:23:03
%1 %2 ... は%*
%2 ... をまとめて取り出せないかな
バラして組み立てるしかないかな

545 :デフォルトの名無しさん:2010/01/14(木) 23:26:37
shiftすりゃいいんじゃねーの

546 :デフォルトの名無しさん:2010/01/15(金) 02:34:52
shift
echo %*

547 :デフォルトの名無しさん:2010/01/15(金) 07:02:48
これだと %1 も出てくるな…

548 :デフォルトの名無しさん:2010/01/15(金) 09:28:36
shift /2

549 :デフォルトの名無しさん:2010/01/15(金) 13:11:40
for /f "tokens=1*"でとれるんじゃねーの

550 :デフォルトの名無しさん:2010/01/15(金) 13:48:41
shiftじゃできないんじゃねーの

551 :デフォルトの名無しさん:2010/01/15(金) 19:42:14
for /f "tokens=1*"じゃできないんじゃねーの

552 :デフォルトの名無しさん:2010/01/15(金) 20:31:47
for /f "tokens=1*" %%i in (%*) do echo %j

553 :デフォルトの名無しさん:2010/01/15(金) 21:44:02
for /f "tokens=1*" %%i in ("%*") do echo %j
だろ

554 :デフォルトの名無しさん:2010/01/16(土) 11:29:18
この言語はforの使い方がおかしい

555 :デフォルトの名無しさん:2010/01/16(土) 15:33:31
ワイルドカードを展開するコマンドにforという名前をつけてしまったのがそもそもの間違い。

556 :デフォルトの名無しさん:2010/01/16(土) 16:13:29
for /f "tokens=1*" %i in ("1 2 3 4") do echo %j
2 3 4
ほれ

557 :デフォルトの名無しさん:2010/01/16(土) 17:16:36
for /f "tokens=1*" %i in (""1 2" "3 4"") do echo %j
2" "3 4"
ほれ

558 :デフォルトの名無しさん:2010/01/18(月) 15:10:32
set a=%*
echo !a:%1=!

559 :デフォルトの名無しさん: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フォルダにバックアップをするには
どのようにすれば宜しいでしょうか?

560 :デフォルトの名無しさん:2010/01/19(火) 11:39:09
ランダムの意味わかってないだろ

561 :559:2010/01/19(火) 11:52:46
1〜3までの数字をアットランダムに付けたいのですが・・。
Default1.dfgというファイル名での保存が、複数回続いても構いません。
(きっちり、1→2→3という順番で、バッチ処理する度にファイル名が変わってくれなくて構わないです)

562 :デフォルトの名無しさん: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"

563 :559:2010/01/19(火) 15:29:47
>>562
ありがとうございます!
コピー先は直しましたが、まさに目的は叶いました。
本当、感謝です!

564 :デフォルトの名無しさん:2010/01/19(火) 18:15:40
>>560

>>560

565 :デフォルトの名無しさん:2010/01/19(火) 19:39:38
>>564


566 :デフォルトの名無しさん:2010/01/20(水) 13:48:59
サイクリック版作りたかったら作ってみ

567 :デフォルトの名無しさん:2010/01/23(土) 03:00:27
>>560

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

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

> set /a random=%random%%%3+1

568 :デフォルトの名無しさん:2010/01/23(土) 21:44:08
>>567

560は562が書かれる前にレスの内容がわかるエスパーなんですね。

569 :デフォルトの名無しさん:2010/01/24(日) 05:15:14
別に560の前の時点で、環境変数(%random%)を使えば良いのは判る訳で
そこへ560の質問の意味が解からん

570 :デフォルトの名無しさん: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 の購入の参考にしたいので、
詳しくわかる方いましたらよろしくお願いします。


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

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

自分は普段まずシャッフル再生はしないので、今ちょっと試してみた
結果を見て回答したので、何か間違いがあるかもしれません。


572 :デフォルトの名無しさん:2010/01/24(日) 12:45:56
回答ありがとうございます。

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

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

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

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


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

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


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

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

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

> A,C,E,A,C,E,...のように、同じ曲ばかりを繰り返します
そういうプログラムがされている可能性も否定はできませんが、錯覚である可能性もあります。

574 :デフォルトの名無しさん:2010/01/24(日) 12:48:00
回答ありがとうございます。

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


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

本題?のiPod購入は、前向きになっています。

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

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

560=562だったとしても何も驚かんけどな。

576 :デフォルトの名無しさん:2010/01/24(日) 12:50:06
>・一度流した曲は、再生リスト内の曲を全て再生するまでは再生しない。

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

ただし、iPodやiTunesの「ランダム」というのは「万遍なく」という意味ではなく「目茶苦茶」という意味ですので、同じアーチストの曲が連続したりすることもあれば、プレイリスト内の次の曲がそのまま再生されたりもします。文字通り「目茶苦茶」です。

577 :デフォルトの名無しさん:2010/01/24(日) 16:39:24
ランダムフェチ?

578 :デフォルトの名無しさん:2010/01/24(日) 19:16:09
トラウマ?

579 :デフォルトの名無しさん: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
 :
 :

どうしてもバッチでやりたい変態です
バッチ単体じゃ無理かね

580 :デフォルトの名無しさん: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

どうしてもバッチ単体で処理したい変態です。
無理ですかね…

581 :デフォルトの名無しさん: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

582 :デフォルトの名無しさん: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

583 :デフォルトの名無しさん:2010/01/25(月) 20:48:04
一時ファイル使わんとでけんのか?

584 :デフォルトの名無しさん:2010/01/25(月) 21:22:56
>>581
%%~nxI ?%%I
とすればいいよ
もし<tab>が入力できれば
%%~nxI<tab>%%I
delims=<tab>
でもいいが難度が高いかな?

585 :デフォルトの名無しさん:2010/01/25(月) 22:12:16
>>584
?????

586 :デフォルトの名無しさん:2010/01/25(月) 23:12:59
sort順だろ
%%~nxI?%%I
だと数字が?より前になる
%%~nxI ?%%I
なら数字が より後ろになる

587 :デフォルトの名無しさん:2010/01/26(火) 00:51:04
そこまで考えてなかった

588 :デフォルトの名無しさん:2010/01/26(火) 02:28:17
ぶっ

589 :デフォルトの名無しさん:2010/01/26(火) 12:25:06
>>586
sortコマンドの並び替えはascii順じゃないので数字より前に?が来る。

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

多分sortでファイル名に出来ない文字で一番若いのは(0f)
区切り文字をこれにしたらとりあえずokみたい。

590 :デフォルトの名無しさん:2010/01/26(火) 12:28:24
書き込んだら文字消えたorz
コマンドプロンプト上ではアスタリスクみたいに見える文字(外字?)

591 :デフォルトの名無しさん: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


592 :デフォルトの名無しさん:2010/01/26(火) 19:53:21
どっちもメモ帳で入力できない

593 :デフォルトの名無しさん:2010/01/26(火) 20:41:27
コマンドプロンプト上からecho ^A>>hoge.bat とか。
^AはCtrl+A

594 :デフォルトの名無しさん:2010/01/26(火) 22:06:24
メモ帳で入力できるものを使えば?


595 :デフォルトの名無しさん:2010/01/29(金) 18:36:32
ショートカット作ってアイコン変えると窓のアイコンが変わってくれるけど
バッチファイル中から自力でアイコン変える方法ってないですか?
フリーウェア等の外部ツールでもいいんですが。

596 :デフォルトの名無しさん:2010/01/31(日) 22:42:41
ある

597 :デフォルトの名無しさん: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状態です。

598 :デフォルトの名無しさん:2010/01/31(日) 22:57:12
あほ

599 :デフォルトの名無しさん:2010/01/31(日) 23:10:23
>>597
無理して日本語を使わなくてもいいですよ。
BATでおk

600 :デフォルトの名無しさん: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%の中身がいつの間にか新ファイル名に変わってるので困っております。

601 :デフォルトの名無しさん:2010/01/31(日) 23:58:51
callした先で書き換えちゃってるんだろ
call先でsetlocal 〜 endlocalしとけ

602 :デフォルトの名無しさん:2010/02/01(月) 00:00:36
追記
call先のファイルをいじれないんだったらcallの呼び出しをsetlocal〜endlocalで囲む

603 :デフォルトの名無しさん:2010/02/01(月) 00:03:46
そうかcallの前後をsetlocal 〜 endlocalしとけ

604 :デフォルトの名無しさん:2010/02/01(月) 00:24:56
>>601
Danke.

605 :デフォルトの名無しさん: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

606 :デフォルトの名無しさん:2010/02/01(月) 11:12:49
%INPUTPATH%
が \ で終わっていないに 1000ガバス。

とりあえず
IF EXIST "%INPUTPATH%\work.tmp" goto tmpdel
じゃないか?

607 :デフォルトの名無しさん:2010/02/01(月) 11:22:30
606で終わってるけど質問する前に
echo onするなり
echo IF EXIST %INPUTPATH%work.tmp goto tmpdelするなりして
何をチェックしようとしてるのか確認しろ

608 :デフォルトの名無しさん:2010/02/01(月) 14:25:44
>>606
いや、\は付いてる

609 :デフォルトの名無しさん:2010/02/01(月) 14:59:02
>>598

610 :デフォルトの名無しさん:2010/02/01(月) 16:29:43
>>608
work.tmp が wark.tmp とか work,tmp なのが原因でファイルが存在しないに 1200カパズ。
for の中で遅延展開してない、に 1500ガバス。

そもそも 607 のアドバイスのように echo の結果はどうなのよ?
まさか、表示が流れて読めません、とかいう訳じゃないんでしょ?

611 :デフォルトの名無しさん:2010/02/01(月) 16:46:46
ここに書いた例と実際のバッチが全く別物とか。

612 :デフォルトの名無しさん:2010/02/01(月) 17:32:55
>>610
echoの結果も同じ。
なんでだろ?

613 :デフォルトの名無しさん:2010/02/01(月) 18:08:04
同じって言葉じゃなくて具体例を出せよw

実際に使ってる内容晒したらエラー出て当たり前って内容かもしれないだろ。
おまえさんがその当たり前に気付いてないだけで。

614 :デフォルトの名無しさん:2010/02/01(月) 19:52:01
そもそもバッチファイル理解できてる?
よければ問題が起こる最小限のコード全体を貼ってくれ

615 :デフォルトの名無しさん:2010/02/01(月) 21:30:59
delするのに存在確認は不要だろあほか

616 :デフォルトの名無しさん:2010/02/01(月) 22:11:39
カレントディレクトリから一つ下のサブディレクトリ名を取得する。
それを引数としてあるバッチに渡す。
以上を一つ下のサブディレクトリ全てについて実行するバッチって作れますか?
WSHの方が良いですか?


617 :デフォルトの名無しさん:2010/02/01(月) 22:41:36
>>613
試しに
ECHO "%INPUTPATH%hogehoge.txt"
としたら
C:\hogehoge.txt
と¥付きで表示される。

618 :デフォルトの名無しさん:2010/02/01(月) 23:51:27
ありぃ?
分かった。
直前で作ったファイルが書ききれていなかったっぽい。
TIMEOUT1秒入れたらEXISTで見えるようになった。

619 :デフォルトの名無しさん:2010/02/02(火) 01:13:03
>>616
for /d %%I in (*) do (
echo call exec.bat %%I
)

620 :デフォルトの名無しさん:2010/02/02(火) 01:33:15
>>619
すげぇ!こういとも簡単にできるとは…。
ありがとうございます。

621 :デフォルトの名無しさん:2010/02/02(火) 01:44:36
すまん。最後にもう一つだけ教えてください。

SET INPUT=%~dpnx1
ECHO %INPUT%
pause

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

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

これを回避するにはどうしたらいい?

622 :デフォルトの名無しさん:2010/02/02(火) 02:06:53
切れてないよ

623 :デフォルトの名無しさん:2010/02/02(火) 03:22:16
長江は長過ぎる 黄河にしとけ

624 :デフォルトの名無しさん:2010/02/02(火) 08:41:12
>>622
嘘お?
PC3台とも切れるんだが?
ちなみにスペースは全角な。

>>623
さぶぅ

625 :デフォルトの名無しさん:2010/02/02(火) 10:37:47
バッチファイルは全角半角スペース混じりのファイル名を正しく扱える(必要な時にちゃんと""で囲めば)。
そのコードで問題が出るなら明らかに呼び出し側の問題。

626 :デフォルトの名無しさん:2010/02/02(火) 12:24:52
>>625
試しにecho "%INPUT%"
をしても同じ

627 :デフォルトの名無しさん:2010/02/02(火) 12:32:11
>>621
普通なら切れない。

切れるとしたらbatファイルの関連付けでドロップハンドラが壊れているんだろう。

628 :デフォルトの名無しさん:2010/02/02(火) 15:12:55
こういう話だろ
http://scripting.cocolog-nifty.com/blog/2008/02/post_c740.html

629 :デフォルトの名無しさん:2010/02/02(火) 15:59:28
>>627
pgr

630 :デフォルトの名無しさん:2010/02/02(火) 16:36:56
>>621
半角で例示したりして芸の細かいこと

631 :デフォルトの名無しさん:2010/02/02(火) 19:55:37
バッチファイルにD&Dなんてするなよ
素直にコマンドプロンプトで打てばいいじゃん

632 :デフォルトの名無しさん:2010/02/02(火) 21:10:28
どこでもいいから適当なフォルダに長江&shutdown 6380.txtってファイルを作って
さっきのバッチファイルにD&Dしてみてくれ。

633 :デフォルトの名無しさん:2010/02/02(火) 23:39:00
>>628
ありがと。

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

>>632
さぶぅ。
雪降らせたのお前か。

634 :デフォルトの名無しさん:2010/02/03(水) 02:14:36
バッチファイルにD&Dするかぎり無理なのら。

635 :デフォルトの名無しさん:2010/02/03(水) 02:42:21
ドロップハンドラ作ればええのら。

636 :デフォルトの名無しさん:2010/02/03(水) 14:35:34
Drop on Scriptのドロップハンドラは?

637 :デフォルトの名無しさん:2010/02/05(金) 14:35:40
累乗計算バッチだるす。

638 :デフォルトの名無しさん:2010/02/05(金) 21:19:53
2の3乗
3の3乗

639 :デフォルトの名無しさん: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
という状態になってしまいました。
これは自分のワイルドカードの使い方が根本的に間違っているのでしょうか?
どなたかご教授お願いいたします。

640 :デフォルトの名無しさん:2010/02/07(日) 15:23:12
ワイルドカードはファイル名を保持してない

641 :デフォルトの名無しさん: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
)


642 :デフォルトの名無しさん: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=%%
)


643 :デフォルトの名無しさん: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!)

644 :デフォルトの名無しさん:2010/02/07(日) 19:44:18
>640-643
みなさん、ありがとうございます!
試してみましたところ、ばっちり動作しました。
ただ、ばっちり動作しますがプログラムの挙動を自身がまだ理解できてない状態なので
これらを元に色々調べてプログラムを練ってみたいと思います。

645 :デフォルトの名無しさん: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
こっちは、上からリンクあるからイランと思うけど。

646 :デフォルトの名無しさん:2010/02/10(水) 00:24:35
コマンド シェルの概要
http://technet.microsoft.com/ja-jp/library/cc778084.aspx

アチャー

647 :デフォルトの名無しさん:2010/02/10(水) 00:25:38
orz

648 :デフォルトの名無しさん:2010/02/10(水) 09:53:38
自分の使ってるOSのヘルプならいつでも見れるはずだが、
ヘルプすら読まずに質問するやつが多すぎるという嫌味?

649 :デフォルトの名無しさん:2010/02/10(水) 13:59:37
>>646
Runasなんてあったのかー

650 :デフォルトの名無しさん:2010/02/10(水) 15:52:52
MSのヘルプは探すのが面倒

651 :デフォルトの名無しさん:2010/02/10(水) 16:15:51
ヘルプより掲示板で聞いた方が早いし楽

652 :デフォルトの名無しさん:2010/02/12(金) 01:00:53
WindowsXPのコンソールで、
unixでいうところのsmbclientを使うには、
どのようにしたらよいでしょう?
smbはもともとWindowsのプロトコルで、GUIに統合されているため、
smbclientのコマンドラインプログラムというのがあるのかないのか、
よくわからないのですが、
パスワードつきの他のマシンに起動時に自動接続するのに、
ネットワークドライブに割り当てただけではだめだったので、
それならコンソールでコマンドを実行して接続するか、と考えました。
ご存じでしたらアドバイスをお願いします。


653 :デフォルトの名無しさん:2010/02/12(金) 01:04:43
net

654 :デフォルトの名無しさん:2010/02/12(金) 01:21:50
>>653
thanks

655 :デフォルトの名無しさん:2010/02/14(日) 03:13:43
MSのヘルプは詳しいのと詳しくないのと差があるからな
makecabとかまったくわからんしfsutilとか独自すぎて笑える
cmdのヘルプもわかりにくい部類になるだろう
書いてあるのかないのかよくわからんことも多いし

掲示板のほうが楽しいとかはさすがにあれだがw

656 :デフォルトの名無しさん:2010/02/14(日) 21:54:55
あのさあ...
objShell.Run "コマンド1 | コマンド2 | sort"
とかをスクリプトでするとしましょう。
そのとき、途中のコマンドが
.vbs とか .wsf の//job:XXX として、
そのなかに Wscript.Sleep 100 があるとパイプラインが詰まる?
ことないですか?


657 :デフォルトの名無しさん:2010/02/14(日) 22:37:57
それ詰まるもなにもパイプラインにならんだろ?


658 :デフォルトの名無しさん:2010/02/14(日) 22:48:45
えー...。 ごめーん
コマンド1 とかは
Cscript //nologo XXX.vbs で、
XXX.vbs や YYY.wsf //job:ZZZ 内部では
Wscript.Echo とか Wscript.StdOut.WriteLine 使用

ではどうだろう。
あげたれ


659 :デフォルトの名無しさん:2010/02/14(日) 23:07:30
コマンド1がパイプラインの機能を持ってるのか?という話だが?
cmd /cならパイプラインの機能を持ってるが?

660 :デフォルトの名無しさん:2010/02/14(日) 23:29:58
あああ、そのとおり
objShell.Run "cmd.exe /c " & "コマンド1 | " & ...
でした。

で、コマンド1にWscript.Sleep 100 があるとコマンド1で止まっちゃうような。
気がするのです

661 :デフォルトの名無しさん:2010/02/15(月) 00:09:24
ないです

662 :デフォルトの名無しさん:2010/02/15(月) 21:36:31
ないですね。はてな

663 :デフォルトの名無しさん: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 となる事は可能ですか?

664 :デフォルトの名無しさん:2010/02/16(火) 14:29:10
>>663
こんな感じかな?
× set FOLDER=%1
○ call set FOLDER=%%%1%%

665 :デフォルトの名無しさん:2010/02/16(火) 18:01:21
>>664
できました。ありがとうございました。

666 :デフォルトの名無しさん:2010/02/27(土) 11:20:25
質問させてください。
パソコンちょっと詳しいからということで、会社の
ネットワーク管理者にされてしまいました。
運の悪いことに、次年度からパソコンの更新が行われ、
Windows XP→Windows 7にOSも変更になりました。
前任の人がWindows XP環境でログインしたときに、
仕事でよく使うフォルダへのショートカットを
ログイン時のバッチファイルで表示させていたのですが、
Windows 7では動作しないみたいなのですorz
Windows 7でバッチファイルでファイルのショートカットを
デスクトップに表示させるにはどうしたらいいでしょうか?
いろいろググッてみましたが、それ用のフリーソフトが
あるみたいなのですが、Windows 7では動きそうにないんです...

667 :デフォルトの名無しさん:2010/02/27(土) 13:05:03
http://pc12.2ch.net/test/read.cgi/win/1243134619/
管理者スレ

668 :デフォルトの名無しさん:2010/02/27(土) 13:08:37
回答させてください
>ログイン時のバッチファイルで表示させていたのですが、
>Windows 7では動作しないみたいなのですorz
動作するかしないかはっきりさせろ!
実行してみりゃどういうエラーが出てるかわかるだろ?

669 :デフォルトの名無しさん:2010/02/27(土) 13:23:23
>>668
前任の人の設定のままでXPのマシンをログインすると
ちゃんとショートカットでるのですが、7だと、
エラーメッセージも出ず、スルー状態なんです。
(つまり何もおきない)
他のソフトインストールして試して見ます。
このスレの人で、ショートカット表示
させるコマンドライン知っている人い
ましたら、ご教示ください。
おながいしまつ。

670 :デフォルトの名無しさん:2010/02/27(土) 14:29:35
ドメインへのログオンスクリプトならポリシーの適用してない/できてないとか。
そもそもhomeでドメインに参加できないとか。
ショートカット表示の意味がわからない。
エクスプローラ上で表示させる事なのか、リモート資源の接続先をポップアップさせる事なのか。
とにかく5W1Hで明確に書いてくれないと全くわかんね。

671 :デフォルトの名無しさん:2010/02/27(土) 15:20:16
>>670 多分668さんも同一人物
とても親切にしていただいてありがとうございます。
前の設定者はドメインに参加する時点で、windows 2003 server
のActive Direcrory処理の際に、ログオンするときのバッチファイルに
デスクトップにショートカットを表示させるようにしてたみたいです。
というのも、管理者以外はディレクトリ構造も知らないので、
それを全員に分からせてセキュリティレベルを下げるより、
自動的にショートカットを表示してクリックさせるという形に
したようです。確かにパスを追っていけばそのファイルに到達しますが、
わざとそうさせないみたいです。(その方針には私も賛成します)
長文すみません。

672 :デフォルトの名無しさん:2010/02/27(土) 15:22:13
で、デスクトップへ通常使うけど、
パスを探られたくないフォルダへの
ショートカットを入れたいということです。
パソコンしかさわったことないので、
こういう具体的かつ実践的なご指摘はとても
勉強になります。ありがとうございます。

673 :デフォルトの名無しさん:2010/02/27(土) 17:01:32
ポリシー設定のなかにもデスクトップの表示に関する項目があった気がする
このスレ的にはログオンスクリプトの中でNET USEで接続しているんだろうな位・・・もしかするとSUBST?

674 :デフォルトの名無しさん:2010/02/27(土) 17:24:57
ありがとうございます。
明日は日曜ですが、隠れ出社して試してみます。

675 :デフォルトの名無しさん:2010/02/27(土) 19:12:15
バッチからショートカットを作るのはむずかしかろ
インターネットショートカットならかんたん
(
echo;[InternetShortcut]
echo;URL=\\server\sharename\folder
) > desktop\hoge.url

676 :デフォルトの名無しさん:2010/02/27(土) 19:34:54
どういう風に作ってたかしらんけど、フォルダ構造が変わったからじゃないの?
大抵は新しいパスへリダイレクトしてくれるけど、AllUsers→Publicの部分はうまくいかない模様

XP以前:C:\Documents and Settings\All Users\Desktop
Vista以降:C:\Users\Public\Desktop

677 :デフォルトの名無しさん:2010/02/27(土) 20:15:31
>>676
さすがに会社のサーバ?でユーサフォルダ以降のフォルダ使わないだろw
まさか、な・・・?

678 :デフォルトの名無しさん:2010/02/28(日) 00:15:40
>>675-677
ヒントありがとうございます。
まさかもありえるのでちょっとやってみます。

679 :デフォルトの名無しさん:2010/02/28(日) 05:55:24
規模にもよるけど引継ぎ書とか運用手順書とか必要でしょ。
次の人に渡すにしても。
前任者に要求しとかないとまずいね。

680 :デフォルトの名無しさん:2010/02/28(日) 12:55:36
「ログオンするときのバッチファイル」を、クライアントのWindows7マシン上にコピーして
コマンドラインから実行してみたらエラー内容が分かるんじゃない?

681 :デフォルトの名無しさん:2010/02/28(日) 18:47:20
みなさんありがとうございます。
バッチファイルが別のバッチファイル呼び出すような
入れ子構造になっていることが判明し、解析に手間取ってます
というか、そもそもDOSのコマンド知らないorz
一から調べていますので少々時間くださいまし。

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

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

683 :デフォルトの名無しさん:2010/03/03(水) 22:56:17
cmdでlinuxの mkfifo hoge 的なことってできますか?

684 :デフォルトの名無しさん:2010/03/04(木) 00:20:27
普通のファイルで1 writer n readerができるが?

685 :デフォルトの名無しさん:2010/03/04(木) 21:13:13
CreateNamedPipe()で作れば?

686 :デフォルトの名無しさん:2010/03/07(日) 19:34:58
Jドライブの直下のlhacaフォルダの下にLhaca.exeという圧縮ファイルがあります
それをつかってJドライブ直下にあるaaaフォルダを圧縮してデスクトップに出力させたいのですが
どうもうまくいきません
どこが悪いかを教えてください

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

687 :デフォルトの名無しさん: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の問題かも

688 :デフォルトの名無しさん:2010/03/07(日) 23:28:57
有り難うございます
既にカレントドライブはJになっています。
Lhacaは普通に手で実行すると普通に開くのですが
Dosコマンドで開こうとするとどうしてもエラーになります

689 :デフォルトの名無しさん:2010/03/08(月) 00:10:36
>>688
詳しいエラー教えて

690 :デフォルトの名無しさん: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とかコマンドラインに正式に対応してるアーカイバ使った方がいいんでない?

691 :デフォルトの名無しさん: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が言っているように別のアーカイバ使った方が良いよってこと。

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

http://blog-imgs-42.fc2.com/s/h/t/shtpg/fri.txt

693 :デフォルトの名無しさん:2010/03/08(月) 03:57:06
>>691
圧縮形式や作成先はLhaca自体の設定(レジストリ)に依存するようだよ
Lhacaはコマンドラインで使わないほうがいいな

694 :693:2010/03/08(月) 04:00:46
と思ったらレジストリじゃなくて
"C:\Windows\Lhaca.ini"
なんてのが勝手に作成されてた

行儀が悪すぎる!

695 :デフォルトの名無しさん: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\*"

696 :デフォルトの名無しさん:2010/03/08(月) 08:33:40
>695をちょっと訂正。
macros.lzh → aaa.lzh

いずれにせよ"%USERPROFILE%\デスクトップ\"を指定するのがポイント。
ただし「窓の手」などでデスクトップのフォルダを任意のフォルダに変えてる場合、この手段は使えない。

697 :デフォルトの名無しさん:2010/03/08(月) 23:24:41
>>691
バッチというかコマンドラインでやっても問題ない
アーカイバってどんなのがあるの?

一見しただけじゃわからないからな

698 :デフォルトの名無しさん:2010/03/09(火) 01:03:50
有名どころならWinRARとか7zipでもできるよ

699 :デフォルトの名無しさん:2010/03/09(火) 01:31:57
コマンドラインならundll.exe使っとけ。統合アーカイバDLLならどれでもおk。

700 :693:2010/03/09(火) 01:48:24
圧縮できればいいのなら makecab という手もある

701 :デフォルトの名無しさん: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

702 :デフォルトの名無しさん:2010/03/09(火) 15:34:51
CMDで↓の様なトランザクション処理はどのように記述すればよいのでしょうか?
これがないと怖くて処理が書けないのですが。

PowerShell 2.0の新機能(5) ――トランザクション編(1/3):CodeZine
http://codezine.jp/article/detail/4944

703 :デフォルトの名無しさん:2010/03/09(火) 16:31:12
@echo off
powershell syori.ps1

704 :デフォルトの名無しさん: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

705 :デフォルトの名無しさん:2010/03/09(火) 17:13:21
図解入門 よくわかる最新データ圧縮技術の基本と仕組み
―情報圧縮技術とアルゴリズムの基礎講座
How‐nual Visual Guide Book

圧縮アルゴリズム―符号化の原理とC言語による実装 C magazine


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




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

test.vbs "C:\Dir 1\"

708 :デフォルトの名無しさん:2010/03/17(水) 12:30:02
>>707
確認してみましたが、確かにVBSだときちんと受け取ってますね・・。
理由は気になりますが、書式として間違っていたわけではないと
わかっただけで大収穫です。
ありがとう。


709 :デフォルトの名無しさん:2010/03/17(水) 14:19:30
>>706
test.exe "a b c d"の中に"を入れるときは、\"でエスケープするだよ
test.exe "a \"b c\" d"

710 :デフォルトの名無しさん:2010/03/17(水) 19:29:21
>>709
おお!なるほど!エスケープを使えたとは知りませんでした。
すっきり解決しました。ありがとう。



711 :デフォルトの名無しさん:2010/03/17(水) 20:03:53
exeによって解釈は違うから永久にすっきりしないよ。

712 :デフォルトの名無しさん: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です。

713 :デフォルトの名無しさん:2010/03/17(水) 23:12:40
某コマンド 某オプション | more | findstr /b /e /c:"hoge foo %fuga%"

714 :デフォルトの名無しさん:2010/03/17(水) 23:27:56
/x

715 :デフォルトの名無しさん:2010/03/18(木) 01:51:47
動画ファイルだけどシステム属性が付いてるファイルがあります。
ググったところ、コマンドプロンプトから「attrib ドライブ名:\ファイル名.拡張子 -s」で解除できることがわかりました。
いちいちコマンドプロンプトからやらないで、バッチファイルを作って、それを実行することで解除するようにするにはどういう記述を書けばいいのでしょう。


716 :デフォルトの名無しさん:2010/03/18(木) 02:19:01
http://pc12.2ch.net/test/read.cgi/software/1265545912/

717 :デフォルトの名無しさん:2010/03/18(木) 10:01:26
>715
@echo off
attrib ドライブ名:\ファイル名.拡張子 -s

718 :デフォルトの名無しさん:2010/03/18(木) 10:12:28
>>711
Windowsのコマンドで、きえる、\"以外の例を挙げてみろよ

719 :デフォルトの名無しさん:2010/03/18(木) 10:54:37
"C:\Program Files\Internet Explorer\iexplore.exe" "http://www.ya\"hoo.com"


720 :デフォルトの名無しさん:2010/03/18(木) 17:42:01
無理すんな

721 :デフォルトの名無しさん: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がそれぞれ好き勝手に解釈しているし。

722 :デフォルトの名無しさん:2010/03/18(木) 19:55:53
そんな便利なものがあったのか

723 :デフォルトの名無しさん:2010/03/18(木) 20:56:58
NT標準でいいが 9xとかいらね

724 :デフォルトの名無しさん:2010/03/18(木) 22:29:59
9xは__argv、NTはCommandLineToArgvW

725 :デフォルトの名無しさん:2010/03/19(金) 17:12:30
>>721
無理すんな

726 :デフォルトの名無しさん:2010/03/20(土) 16:59:48
環境変数のuserpartってなに?

727 :JGSDF:2010/03/21(日) 00:49:25
syosinsya

728 :JGSDF:2010/03/21(日) 00:51:01
cmd


729 :712:2010/03/21(日) 13:59:48
>>713
moreコマンドでは某コマンドの出力行が長くなった時に問題あるかと思い、
find -v ""にて標準出力を無条件にfindする方法にて対応しました。
ですが、LF改行の出力が別のコマンドでフィルタすることによって、
CRLF改行に変換できるというのが大変参考になり、どうもありがとうございました。

>>714
/xオプションなら/bと/eを併用しなくてもよかったのですね
ヘルプやオンラインマニュアルで印刷やプリントといったキーワードが使われていたため、
完全一致検索のことを指していると気づいていませんでした。
マイクロソフトの翻訳は微妙なことも多いので、英語版サイトもこれからは見るようにします。
どうもありがとうございました。

730 :712:2010/03/22(月) 08:36:22
引数%1がフォルダだった場合とファイルだった場合で
処理分岐するバッチファイルを作成したいのですが、
修飾子%~a1で取得できる属性には、ディレクトリとファイルを区別する
属性がなく、困っています。

731 :730:2010/03/22(月) 11:28:45
OSはWindows Server 2003です。
書き忘れていました.

732 :デフォルトの名無しさん:2010/03/22(月) 12:55:32
あるけど?

733 :730:2010/03/22(月) 13:17:56
>>732
どうすればよいか教えて頂けませんか?

734 :デフォルトの名無しさん:2010/03/22(月) 17:13:34
dirかcd

735 :デフォルトの名無しさん:2010/03/22(月) 17:25:02
if exist dirname\con echo dir

736 :デフォルトの名無しさん:2010/03/22(月) 18:17:09
cd foo && echo succ || echo fail

737 :デフォルトの名無しさん:2010/03/22(月) 21:26:33
FOR /F "eol=-" IN ("%~a1") DO ECHO FOLDR
FOR /F "eol=d" IN ("%~a1") DO ECHO FILE

738 :デフォルトの名無しさん:2010/03/22(月) 21:46:12
OS:Windows2003 server,WindowsXP
複数のCSVファイル(yyyymmdd_hhmmss.csvのフォーマット)
をmoreコマンドでひとつのcsvファイルにマージする際、
プライマリキーにおいて重複するレコードを最新のレコード以外
削除するほうほうってないですかね。
バッチ単体で。

739 :デフォルトの名無しさん:2010/03/22(月) 22:14:40
ない

740 :デフォルトの名無しさん:2010/03/22(月) 22:40:00
dir /ad /b "%~dp1" | findstr /x "%~nx1" && echo foruda

741 :デフォルトの名無しさん:2010/03/23(火) 18:37:03
>>736
cdが変わるからやだ

742 :デフォルトの名無しさん:2010/03/23(火) 19:01:51
>>735
"dir name"だと駄目やんけ

743 :デフォルトの名無しさん:2010/03/23(火) 20:29:25
cd "c:\System Volume Information" && echo succ || echo fail


744 :デフォルトの名無しさん:2010/03/23(火) 20:34:37
>>741
pushd&popd使えよ

745 :デフォルトの名無しさん:2010/03/23(火) 22:45:39
つcmd /c cd

746 :デフォルトの名無しさん:2010/03/24(水) 23:35:07
バッチ内でwmic process get や wmic ntevent を使用して、結果をテキストファイルに出力しようとしています。
ここで、wmicの出力がUnicode、別のリダイレクト部分(START、ENDなどのコメント)がSJISで出力されてしまいます。
wmicの出力をSJIS(CR+LF)にする方法はありますでしょうか。


747 :デフォルトの名無しさん:2010/03/25(木) 01:01:55
ttp://scripting.cocolog-nifty.com/blog/2009/09/wmic-6efe.html

748 :デフォルトの名無しさん:2010/03/25(木) 19:05:39
>別のリダイレクト部分(START、ENDなどのコメント)がSJISで出力されてしまいます。
これをunicodeで出せばよい

749 :デフォルトの名無しさん:2010/03/26(金) 00:35:26
>>740
rootに使えん

750 :デフォルトの名無しさん:2010/03/27(土) 00:31:19
>>742
if existはどうやっても駄目だな

751 :デフォルトの名無しさん:2010/03/27(土) 00:43:39
if exist "dir name\*" は?

752 :デフォルトの名無しさん: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========== を見分けるにはどーすりゃいいんだ?

753 :デフォルトの名無しさん:2010/03/27(土) 02:11:47
pushd %1&&popd
echo %errorlevel%

754 :デフォルトの名無しさん:2010/03/27(土) 07:01:38
>>752
>ふと思ったのは %1 を渡された時にたとえば aaa と aaa========== を見分けるにはどーすりゃいいんだ?
ヒント:findstr /x

755 :デフォルトの名無しさん:2010/03/27(土) 09:22:25
>>754
findstr をしようにも、たとえば
echo %1
というバッチファイル test.bat で
test.bat aaa と test.bat aaa===== でどちらも aaa となって末尾の = が拾えない
のを「見分けるにはどーすりゃいいんだ?」と思ったんですが。
オレ何か勘違いしてる?

756 :デフォルトの名無しさん:2010/03/27(土) 14:29:01
>>751
あまいな .もない、空のフォルダってぇのがあるのだ
>>752 >>753
アクセス権がないフォルダはファイルなのか
>>755
別の話を絡めるな
test.bat "aaa====="

757 :デフォルトの名無しさん:2010/03/27(土) 14:35:30
厳密にやりたきゃ別の言語使えよ。もう質問してる奴もいないし秋田。

758 :デフォルトの名無しさん:2010/03/27(土) 15:56:47
別の言語使いたけりゃ他スレへ行けよ

759 :デフォルトの名無しさん:2010/03/27(土) 17:34:27
厳密にやりたきゃ%~a1を使えばよいだけの話

760 :デフォルトの名無しさん:2010/03/28(日) 17:31:02
あるソフトウェアのバージョン違いが3つほど入ってるんだけど
デスクトップに同じ見た目のアイコンが3つあるからややこしくて。
バッチファイルをクリックすると上下ボタンでどのソフトを起動するか
選択できて、エンター押すと実行っていうのを作りたいんだけど
誰か作ってくんない?
イメージ的にはウィンドウズをセーフモードで起動したときに
選択する画面がまずでてくるんだけどあんな感じ☆

761 :デフォルトの名無しさん:2010/03/28(日) 17:56:46
アイコン変えればいいじゃん

762 :デフォルトの名無しさん:2010/03/28(日) 18:03:24
デスクトップに3つあるアイコンそれぞれに
異なるショートカットキーを指定すればいいじゃん

763 :760:2010/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



764 :デフォルトの名無しさん:2010/03/28(日) 19:38:46
Enterなしにキー入力を受け取る方法がないから無理

765 :デフォルトの名無しさん:2010/03/28(日) 19:47:41
指定したファイルをホームページ(FTPで)にバッチファイルで送信することは可能でしょうか?

766 :デフォルトの名無しさん: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


767 :デフォルトの名無しさん:2010/03/28(日) 20:17:58
if 1==2 (
start notepad
start mspaint
start calc
)


768 :デフォルトの名無しさん:2010/03/28(日) 21:11:49
大昔はそういうメニューが普通にあったが、GUIで死滅したな
あってもブート選択画面ぐらいか

769 :デフォルトの名無しさん:2010/03/28(日) 21:15:15
1文字読み取って制御を返すツール作ればいろいろ用途が広がるよ。
2ストロークで26^2個のツール呼び出せるランチャ作ったけど軽くて便利。

770 :デフォルトの名無しさん:2010/03/28(日) 22:05:34
powershell使えばカーソル選択メニューが作れるよ

771 :デフォルトの名無しさん:2010/03/28(日) 22:32:52
>>765
できるよ
バッチファイルとまた一つftpコマンドを書いたテキストファイルが必要になる

772 :デフォルトの名無しさん:2010/03/29(月) 13:10:44
>>771
遅レスすみません。
ありがとうございます。おかげでできました。

773 :デフォルトの名無しさん:2010/03/29(月) 21:37:47
コマンドプロンプトに表示された文字を(txt等)に出力ってできますか?

774 :デフォルトの名無しさん:2010/03/29(月) 21:42:46
無理

775 :773:2010/03/29(月) 22:54:06
すみません、自己解決しました。

test.bat > log.txt

776 :デフォルトの名無しさん:2010/03/29(月) 23:40:05
>>775
それだと標準エラーがファイル出力できないよ

777 :デフォルトの名無しさん:2010/03/29(月) 23:48:00
test.bat > log.txt 2<&1


778 :デフォルトの名無しさん:2010/03/29(月) 23:59:44
>>776-777
そうなんですか、知りませんでした!
ありがとうございます。

779 :デフォルトの名無しさん:2010/03/30(火) 11:24:07
質問です。

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

があるとすると
拡張子.bakだけ一括で名前変更できるでしょうか?

780 :デフォルトの名無しさん:2010/03/30(火) 13:17:31
できないわけがない

781 :デフォルトの名無しさん:2010/03/30(火) 13:35:10
ren *.bak *.hoge

782 :デフォルトの名無しさん:2010/03/30(火) 13:51:39
それじゃ
a.txt.baka
ab.html.aho
abc.exe.baka

拡張子.bakaだけ一括で名前変更できるでしょうか?

783 :779:2010/03/30(火) 14:02:57
すみません、質問の仕方が間違えていました。
bakの部分だけ消したいんです。

a.txt.bak→a.txt

784 :デフォルトの名無しさん:2010/03/30(火) 14:17:18
ren *.bak *.

785 :デフォルトの名無しさん:2010/03/30(火) 15:07:17
>>784
ありがとうございます
できました

786 :デフォルトの名無しさん:2010/03/30(火) 16:00:55
hogeよりはahoやbakaの方が好き
おっと、kusoも使うなw

787 :デフォルトの名無しさん:2010/03/30(火) 17:21:12
chinko
manko
unko
shikko

788 :デフォルトの名無しさん:2010/04/06(火) 00:27:29
すみません。テキストファイルの中身の特定行だけ抜き出す方法を教えてください。

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

上のようなファイルがあったとして、1行目のmorningや、3行目のbyeを
変数やファイルに出力する方法はないでしょうか。
外部コマンドは使えないWindowsXP/2003環境です。

789 :デフォルトの名無しさん:2010/04/06(火) 02:28:58
for /?

790 :デフォルトの名無しさん:2010/04/06(火) 02:28:59
>>788
find使って >baka.txtとかで出力

うまく使えば一つのバッチファイルで色んなバッチファイルを作成することができるから便利

791 :デフォルトの名無しさん:2010/04/06(火) 07:40:04
findは外部コマンド

792 :デフォルトの名無しさん:2010/04/06(火) 07:56:00
>>788
findstr /r "^morning$ ^bye$" > hoge.txt

793 :デフォルトの名無しさん:2010/04/06(火) 09:11:31
>>791
空気読め馬鹿

794 :デフォルトの名無しさん:2010/04/06(火) 09:28:43
料理できないと買ってきた惣菜をならべるぐらいのことでも自慢するんだよ
それ外で買ってきたんだろとあきれられてても本人は満足

795 :デフォルトの名無しさん:2010/04/06(火) 20:43:40
バッチファイルでテトリス作って

796 :デフォルトの名無しさん:2010/04/06(火) 22:12:33
>>792
ありがとうございます。
説明が不足してたのですが、必ずしも1行目にmorningがあって、3行目にbyeがあるわけじゃない場合に
1行目、3行目を抽出って出来るんでしょうか。根本から違うやり方考えた方が良いですかね・・・。

797 :792:2010/04/06(火) 22:28:25
findstrコマンドは/cオプションを指定しない場合は、
二重引用符内で半角空白区切りで指定されたキーワードを
OR検索できるんだけど、
やりたいのは、特定キーワードで抽出したいんじゃなくて、
特定の行番号を抜き出したいってこと?

798 :デフォルトの名無しさん:2010/04/06(火) 23:05:41
下のようなのを作る場合変数iの引数は12個まで
とかいう決まりがあるのでしょうか?

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

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

と言われます。ちなみに12個まではOKでした。

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

Win9x系かNT系かでも変わってくると思う。

800 :799:2010/04/06(火) 23:21:16
ごめん。NT系でもNT4.0や2000とXP以降で違うみたい。
http://support.microsoft.com/kb/830473/ja

801 :デフォルトの名無しさん:2010/04/06(火) 23:25:24
>>799,800
たぶん、ファイルの長さだと思います。
ありがとうございました。

802 :デフォルトの名無しさん:2010/04/06(火) 23:34:51
たぶん?
結局どうでもよかったのか

803 :792:2010/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 ""」は入力ファイルの全行に行番号出力になってないかも。

804 :デフォルトの名無しさん:2010/04/08(木) 23:02:04
>>801
>たぶん、ファイルの長さだと思います。
ファイルサイズは関係ないだろ

805 :デフォルトの名無しさん: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
)

806 :spectre:2010/04/11(日) 18:40:33
アクティブな画面を「最新の情報に更新」にするバッチってありますかぁ?
どなたかよろしくお願いします。

807 :デフォルトの名無しさん: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

808 :デフォルトの名無しさん:2010/04/11(日) 19:53:59
しかしどうやって動かすんだ?
動いたときアクティブなウィンドウは?

809 :デフォルトの名無しさん:2010/04/11(日) 20:05:00
想定の範囲外です(キリッ
適当なフリーソフト使え

810 :デフォルトの名無しさん:2010/04/12(月) 19:17:26
ローカルでphpスクリプトを動かす際に一連の流れを
バッチファイルでまとめてしまおうと思ったのですが

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

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

どのようにすればすべての処理が行われるでしょうか?

811 :デフォルトの名無しさん:2010/04/12(月) 19:36:02
cd "ディレクトリ1"
httpd.exe
taskkill /im httpd.exe
cd "ディレクトリ2"
C:\php\php.exe batchtest.php

812 :デフォルトの名無しさん:2010/04/12(月) 20:56:35
start httpd.exe

813 :デフォルトの名無しさん:2010/04/13(火) 07:38:21
>>811
ヒネリがないので笑えん。

814 :デフォルトの名無しさん:2010/04/13(火) 12:59:02
>>813
素直な奴だな。

httpd.exeを終了させないとtaskkillが実行されないという二段オチなのに。

815 :デフォルトの名無しさん:2010/04/13(火) 14:49:58
下記のバッチ内、:mpexec_core にある if 文で落ちてしまいます。
書き方に何か問題があるのでしょうか?
http://ideone.com/OvSYW

816 :デフォルトの名無しさん:2010/04/13(火) 15:10:11
その行だけじゃわからないよ
環境変数に適切な値が入っているならちゃんと動くように見える
echoの表示やエラーメッセージはどうなってんの?

エスパー初級な解答
if "%xxx%" geq "%yyy%"のように""で括れば
環境変数が空の場合でも落ちる事はなくなるはず

817 :815:2010/04/13(火) 15:25:07
>816
if "%MP_MAX%" geq "%MP_NUM%" (
に変更しても落ちました。
直前の出力は
if 1 geq 1 (
なので、両方に1が入っていることは確認済みなのですが・・・。
エラーは 「コマンドの構文が誤っています。」 です。

818 :デフォルトの名無しさん:2010/04/13(火) 18:43:38
エラーの詳細が出るようにバッチの先頭におまじないを書いておく

echo W 100 2 0 200 | debug

819 :デフォルトの名無しさん:2010/04/13(火) 18:47:20
>>817
()のなかの命令が不適切なのでは?

820 :デフォルトの名無しさん:2010/04/13(火) 19:54:16
( ) の中で SET を使うのはやめといた方がいいよ
GOTO 文などに置き換えれば動くはず

821 :815:2010/04/13(火) 20:06:10
>>819,820
()の中を関数化したら正常に動作しました。
ありがとうございました。

822 :デフォルトの名無しさん:2010/04/13(火) 20:43:32
すべてのウィンドウを「最新の情報に更新」にするバッチってありますかぁ?

823 :デフォルトの名無しさん:2010/04/13(火) 22:48:22
ないよ

824 :デフォルトの名無しさん:2010/04/14(水) 02:26:10
ありがとうございました。

825 :デフォルトの名無しさん:2010/04/14(水) 17:07:20
作成日時は%~t1で取れますかぁ?

826 :デフォルトの名無しさん:2010/04/14(水) 17:14:10
ヘルプ見るの面倒

827 :デフォルトの名無しさん:2010/04/16(金) 09:14:28
>>825
こういうこと?

for /? より

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



828 :デフォルトの名無しさん:2010/04/16(金) 14:10:17
それ更新日時

829 :デフォルトの名無しさん:2010/04/16(金) 18:25:03
>>828
827じゃないが、ファイルの日付が何になるかって、
環境変数で変更できなかったっけ?
まぁ、できなくても、作成日時だったら、
他の手段で、何とでもなるから困らないけどね

830 :デフォルトの名無しさん:2010/04/16(金) 20:08:20
それDIRCMD

831 :デフォルトの名無しさん:2010/04/17(土) 06:44:59
>>814
だから、それは一目見て分かることで何の面白味もないの。

832 :デフォルトの名無しさん:2010/04/17(土) 07:35:16
>>810
httpdが無いと動かないようなphpなら
netstatとか使って、httpdが起動完了したことを検知しないと駄目な気がする
まぁ、batchtest.php内で成功するまで待つって手もあるけど…
あと、最後にhttpdを止める必要はないの?
動かしっぱなしなら、httpdをバッチで起動する意味はないと思うけど?

833 :デフォルトの名無しさん:2010/04/20(火) 18:16:02
馬鹿じゃないんだからそんなこといちいち聞かれなくても分かってますよ。

834 :デフォルトの名無しさん: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でリネーム


835 :デフォルトの名無しさん:2010/04/23(金) 23:48:57
実装自体はいけそう
que指定時の2の処理が不明だったり
格納ファイルのフォーマット(ファイル名の規則)をどう定義するか
カウンタの初期値をどこから設定するかなど細部が気になる

836 :デフォルトの名無しさん:2010/04/24(土) 00:35:27
>>835
携帯から書いたら改行多すぎと言われて、消しすぎたぜ…

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

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

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

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

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

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

できそうと聞いて安心したよ。
迷4以外はただの設計とアルゴリズムだし。
技術的に困ったらまたお願いします。

837 :834:2010/04/26(月) 07:58:31
キュー、デキューの処理中に再呼び出しされたら困るので、
ロック機能を実装してみた。

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

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

複数起動時も一応ちゃんと動いたんだけど、もっと良い実装ないかな?

838 :デフォルトの名無しさん:2010/04/26(月) 15:52:21
ファイル作らんでも

839 :デフォルトの名無しさん:2010/04/28(水) 10:51:16
copy aaa.txt "%~1\bbb.txt"
というコードを書くとき、%1がc:\fooでもc:\foo\でも動くようにするのって
どういうコード書けばいいですか?

840 :デフォルトの名無しさん:2010/04/28(水) 11:14:55
動画のエンコを連続してやるためにバッチの最後で
自分以外で一番dir順の若いバッチファイル検索→
startで実行→自分自身を削除してexit
ってやってる。
実行順はファイル名で操作。
稚拙だろうけどね。

841 :デフォルトの名無しさん: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%
みたいにする?

842 :デフォルトの名無しさん:2010/04/28(水) 12:30:51
ヘルプに書いてあるのをいちいち説明するのめんどくさい

843 :デフォルトの名無しさん:2010/04/28(水) 12:56:55
>>842
ヘルプ見れで済んだら掲示板いらない

844 :デフォルトの名無しさん:2010/04/29(木) 00:06:49
for %%I in ("%~1\bbb.txt") do copy aaa.txt "%%~fI"

845 :デフォルトの名無しさん:2010/05/02(日) 10:56:25
call :main %* || pause
exit /b

:main
...

とかやっとくとエラーでてもウィンドウが閉じずに残ってくれていいね

846 :tein:2010/05/02(日) 13:48:31
質問です。

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

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

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

よろしくお願いいたします。

847 :デフォルトの名無しさん:2010/05/02(日) 14:10:56
何かの罰ゲーム?

848 :デフォルトの名無しさん:2010/05/02(日) 14:29:37
先に全部読む意味がわからん

849 :デフォルトの名無しさん:2010/05/02(日) 14:52:40
バッチファイルじゃないといけないんですか?文字列に強い言語を使っちゃだめなんでしょうか

850 :デフォルトの名無しさん:2010/05/02(日) 15:11:24
findstr とか

851 :デフォルトの名無しさん:2010/05/02(日) 15:20:40
>>846
すべてをメモリ上にっていうのは、DOSのメモリが小さいことを考えると作るだけ無駄。
環境変数を使った置換はできるけど、環境変数のメモリは特別小さいし制限もある。
元のファイルが壊れるだけだからエディタに読み込んで置換して保存っていうのをやる方がマシ。

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

詳しいことは分からないが、普通はコマンド一発でやるか、for ループで処理する。


852 :デフォルトの名無しさん:2010/05/02(日) 15:39:53
一時ファイルの代わりに環境変数を使おうとしてんだろ?
set file=line1!LF!line2
みたいにLF文字で区切ればいいよ
for /f %%i in (!file!)で行単位に取り出せる

853 :デフォルトの名無しさん:2010/05/02(日) 15:53:25
>>850-851
findやfindstrで文字列置換するって凄いな

854 :デフォルトの名無しさん:2010/05/02(日) 17:28:52
行番号挿入できるじゃない

855 :tein:2010/05/02(日) 17:43:54
>テキストファイル内の特定文字列を置換したいと思っています。

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



856 :デフォルトの名無しさん:2010/05/02(日) 18:00:49
sed とか使っちゃいけない”縛り”があるなら同情できるけど
そうだとしてもそうでなくとも何かしら使いたい話だね。

857 :デフォルトの名無しさん:2010/05/02(日) 18:38:56
まあでも単純な文字列置換なら誰かそういうバッチファイル作って公開してそうな気はする

858 :デフォルトの名無しさん:2010/05/02(日) 18:49:51
行番号挿入は文字列置換なんだ!凄いね

859 :デフォルトの名無しさん:2010/05/02(日) 18:57:56
それほどでもない

860 :デフォルトの名無しさん:2010/05/02(日) 19:27:21
文字列置換バッチでぐぐれば見つかるよ

861 :tein:2010/05/02(日) 20:19:09
内部に変数記号が含まれているため正常に置換できませんでした…

862 :デフォルトの名無しさん:2010/05/02(日) 21:06:36
>>853
勘違いした

863 :デフォルトの名無しさん:2010/05/02(日) 21:07:46
てめえ、シカトしてんじゃねえよ!

864 :デフォルトの名無しさん:2010/05/02(日) 22:29:54
>>863
あなたの発言は、どれ?

865 :デフォルトの名無しさん:2010/05/02(日) 22:36:33
>>846
powershellが簡単だよ

Windows PowerShell を使用してテキスト ファイルの文字を置き換える方法はありますか


866 :Hage:2010/05/02(日) 23:31:57
WindowsPowerShellって、Vistaからですよ。

ちなみに、CMDリファレンス
http://otnx.jp/CMD/

867 :デフォルトの名無しさん:2010/05/03(月) 00:28:24
>>861 と言ってんだからバッチじゃ無理だろ

868 :デフォルトの名無しさん: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);
}

869 :デフォルトの名無しさん:2010/05/03(月) 01:05:44
2行目の 「%0」 は 「"%~f0"」 にして、
1行目と2行目の間に
@setlocal enableextensions
を入れたほうがより良いでしょう。
@cscript.exe を @"%SystemRoot%\system32\cscript.exe"
にするともっと良いか。

870 :デフォルトの名無しさん:2010/05/03(月) 01:19:34
わっめんどうの極み

powershellのほうがはるかに簡単だろ

871 :デフォルトの名無しさん: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();
}

872 :デフォルトの名無しさん:2010/05/03(月) 03:53:08
cat a.txt|%{$_ -replace "aaa","bbb"}|sc a.txt
と張り合うのか?

873 :デフォルトの名無しさん:2010/05/03(月) 04:57:43
wpsインストール+>>872より>>871のほうが手軽なのは確定的に明らか。

874 :デフォルトの名無しさん: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

875 :デフォルトの名無しさん:2010/05/03(月) 09:33:26
つかどっちもスレ違いかw

876 :デフォルトの名無しさん:2010/05/03(月) 09:48:14
>>874
や、入ってるのは2008以降(2008, 7, 2008R2)だよ
まあ最近だとWindowsUpdateとかFixItで入ったりするけど

877 :デフォルトの名無しさん:2010/05/03(月) 16:04:24
PowerShellってmycmd.ps1をバッチファイルから簡単に呼べればもうちょっとガシガシ使えるんだけど
やり方がよくわからん

878 :デフォルトの名無しさん:2010/05/03(月) 16:09:31
>>873
明らかに逆

879 :デフォルトの名無しさん:2010/05/03(月) 16:11:25
>>877
PowerShell -file mycmd.ps1 引数。。。

880 :tein:2010/05/03(月) 17:46:37
>868
質問です。

これは、

abcを"~%0"あいう;「」@![0-5]{25}\nBなどという値に変更したとしても
問題ないでしょうか

881 :デフォルトの名無しさん:2010/05/03(月) 18:43:37
試せない時点で問題

882 :デフォルトの名無しさん:2010/05/04(火) 22:47:16
試さない時点で問題

883 :デフォルトの名無しさん: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

884 :デフォルトの名無しさん:2010/05/05(水) 00:23:13
\nがあるからforeachじゃだめだろ

885 :デフォルトの名無しさん:2010/05/05(水) 14:02:30
>>868 >>871
ファイル上書きできねーよ

886 :デフォルトの名無しさん:2010/05/05(水) 14:07:26
そんなの工夫すればできる

887 :デフォルトの名無しさん: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!

888 :デフォルトの名無しさん:2010/05/05(水) 19:05:47
powershell "ps notepad" && (echo found!) || echo not found!

889 :デフォルトの名無しさん:2010/05/09(日) 21:04:02
ttp://mojalog.com/2007/08/post_34.html

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

だれか教えて偉い人

890 :デフォルトの名無しさん:2010/05/09(日) 21:16:19
作る過程が楽しいのであって、完成してもどうせ使わないんだから
こんなところで聞くなよ。

891 :デフォルトの名無しさん:2010/05/09(日) 21:26:24
http://hp.vector.co.jp/authors/VA014830/FlexRena/

892 :デフォルトの名無しさん: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
)

893 :デフォルトの名無しさん:2010/05/09(日) 23:03:42
%i 誤 -> %%i 正

894 :889:2010/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ずつ加算する所からして上手く行ってないんですよコレが。

向いてないのは重々承知してますがこうすれば良いんだよって教えて偉い人


895 :デフォルトの名無しさん:2010/05/10(月) 00:41:29
変数nの呼び出しは%n%とかこんな低レベルから人に聞くレベル?


set n=10000
for /f "usebackq delims=" %%i in (`dir /b/o-n *.jpg`) do (


896 :デフォルトの名無しさん: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"
)

:途中で書き込んでしまった。
:リネーム先と同じ名前のファイルが無いの前提だが。

897 :デフォルトの名無しさん: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**になる



898 :デフォルトの名無しさん:2010/05/10(月) 01:08:46
つか上全然見てなかった。もろ被りやな。

899 :889:2010/05/10(月) 02:30:18
親切にありがとうございます。
バッチファイルなんて17年ぶりだったんで右往左往してたのですが助かりました。

コレを期に本でも買って勉強してきます。

900 :デフォルトの名無しさん:2010/05/10(月) 06:39:29
本、あるのか?

901 :デフォルトの名無しさん:2010/05/10(月) 18:30:24
結構あるみたいね

902 :デフォルトの名無しさん:2010/05/11(火) 21:45:23
ググってもわからなかったので質問。
%a%が、yでもnでもない場合にgoto aしたいんだけど、
@if not "%a%"=="y,n" goto a
って書いたら駄目だった。
問題は"y,n"の部分だと思うんだけどなんて書いたらいいんでしょう?

903 :デフォルトの名無しさん: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に戻りたい)

904 :デフォルトの名無しさん:2010/05/11(火) 22:16:17
そら応用力はググって解決できるもんじゃないわな

905 :デフォルトの名無しさん:2010/05/11(火) 22:21:52
choice.exeをぐぐれ

906 :デフォルトの名無しさん:2010/05/11(火) 22:29:41
動いて用が足りればいいや程度のもんだろ
不具合でてまずいような用途に使うやつはいない

907 :デフォルトの名無しさん:2010/05/11(火) 23:31:39
if "%a%" neq "y" (if "%a%" neq "n" goto a)

908 :デフォルトの名無しさん:2010/05/12(水) 01:25:59
>>903

Y
>
のケースをテスト

909 :デフォルトの名無しさん:2010/05/12(水) 01:39:08
>>907 ()は必要ないよ

910 :デフォルトの名無しさん:2010/05/12(水) 08:09:30
バッチファイルの実行でctrl+alt+Iなどのキーボード操作をしたいのですが、できますでしょうか?

911 :デフォルトの名無しさん:2010/05/12(水) 08:12:04
できないわけがない

912 :デフォルトの名無しさん:2010/05/12(水) 10:32:27
win32api呼んでキーの押下状態調べてループから抜ける
小物ツール作ってバッチから呼ぶしかない

913 :デフォルトの名無しさん:2010/05/12(水) 14:16:20
wscript.shell使えばええがな

914 :デフォルトの名無しさん:2010/05/12(水) 18:23:58
やればわかるがこのばあいmshtaはやめたほうがええよ
cscriptならだいじょうぶ

915 :902:2010/05/12(水) 21:49:48
みなさん回答ありがとうございました。
>>905が一番理想に近いのでこれに決めました。
(昔のwindowsにはchoiceなんてコマンドがあったことなんて知らなかったw)

916 :デフォルトの名無しさん:2010/05/21(金) 23:52:57
>>912
>win32api呼んでキーの押下状態調べてループから抜ける
???

917 :デフォルトの名無しさん:2010/05/29(土) 18:58:48
現在日時の取得を正確に行いたいのですが
バッチファイルの1行に「echo %DATE% %TIME%」と記述した場合に%DATE%と
%TIME%は必ず全く同じ日時を表示するでしょうか?

%DATE%で一度システム時刻を取得し%TIME%でももう一度システム時刻を
取得しているのか、一度システム時刻を取得した後に%DATE%と%TIME%
にはその取得した時刻を展開しているのでしょうか?


918 :デフォルトの名無しさん:2010/05/29(土) 19:15:57
そんな細かい挙動なんてわかる奴いるのかw

date
time

date
time
の順に取ってdateが同じなら前二個を、食い違ってたら後ろ二個を使えばいいんじゃね。とりあえずは

919 :デフォルトの名無しさん:2010/05/29(土) 19:20:18
echo %time% %time% ...

920 :デフォルトの名無しさん:2010/05/29(土) 19:31:15
わかるよ

set d=%date%
set t=%time%
if not "%date%"=="%d%" (
set d=%date%
set t=%time%
)
とやれば大丈夫

921 :デフォルトの名無しさん:2010/05/29(土) 19:37:52
type nul > tmp
for %%i in (tmp) do set dt=%%~ti
echo %dt%
なら気にせんでえーよ

922 :デフォルトの名無しさん:2010/05/29(土) 21:03:21
貧乏から抜け出せだそうと藁でもつかんでるやつみたいだな
本人は必死なんだろうけど見てると滑稽

923 :917:2010/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%

924 :デフォルトの名無しさん:2010/05/30(日) 15:51:48
now.exe使え

925 :デフォルトの名無しさん:2010/06/03(木) 00:09:52
以下のような内容のテキストファイルがあるとして、
-----
123
abcd
あいうえお
aaaa
-----
上から1行ずつ変数に格納したいのですが、どうすればいいでしょうか。
尚、テキストファイルの行数は、一定とは限らない場合で書き方を教えてください。



926 :デフォルトの名無しさん:2010/06/03(木) 06:18:49
for で普通に回す

927 :デフォルトの名無しさん:2010/06/03(木) 06:38:07
forいろいろ試したんですが、うまくいきません
書式を書いて頂けないでしょうか。

928 :デフォルトの名無しさん:2010/06/03(木) 09:13:41
>>927
help for
に参考例が書いてあるよ

929 :デフォルトの名無しさん:2010/06/03(木) 23:08:41
繰り返し処理は出来るけど、変数をセットする際の添字の扱いが分かりません。
添字って使えるんでしょうか


930 :デフォルトの名無しさん:2010/06/04(金) 00:04:36
http://ja.wikipedia.org/wiki/%E6%B7%BB%E3%81%88%E5%AD%97
>添え字は、文字の右上、左上、右下、左下のいずれかに書かれる文字のことである。
>上付き文字や下付き文字も添え字のひとつであるほか、漢文の送り仮名も添え字である。
>縦書きで表記する場合には、冪乗を表す場合を除き上付き文字や下付き文字という言葉は使用されない。


ん〜〜 使えないかな〜?

931 :デフォルトの名無しさん:2010/06/04(金) 00:18:48
>>929
http://d.hatena.ne.jp/jak-san/20090308/1236501217

932 :デフォルトの名無しさん:2010/06/04(金) 11:00:03
バッチで常に最前面表示ってできませんか?
vbs呼び出してがんばったけど難しすぎた・・

933 :デフォルトの名無しさん:2010/06/04(金) 11:50:19
もちろんできる

934 :デフォルトの名無しさん:2010/06/07(月) 00:04:49
おしえてくださいなり・・

935 :デフォルトの名無しさん: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コマンドを使うしかない?

936 :デフォルトの名無しさん:2010/06/08(火) 13:41:54
コマンドラインオプションに対応しないアプリにファイルを渡したいのですが
ファイルドロップや送るを再現することはできますか?

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

start "" "アプリ" "ファイル"
だとドラッグ&ドロップとは挙動が違うのです

937 :デフォルトの名無しさん:2010/06/08(火) 14:03:48
>>935
無いだろうね。

同じ動作をしようと思ったらfor /fを入れ子に…出来ないから
サブルーチン作ることになるんじゃないかと。

938 :デフォルトの名無しさん: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機がわが途中でフリーズしてしまったりで、うまくいきませんでした。

ほかの方法もあるよ!ってことでもけっこうでございます。
お知恵をおかしください。

939 :デフォルトの名無しさん:2010/06/09(水) 00:46:53
>>938
cygwin入れてfindじゃいかんの?

940 :デフォルトの名無しさん:2010/06/09(水) 01:30:40
dir /b /s *.txt

941 :デフォルトの名無しさん:2010/06/09(水) 03:08:40
for /r D:\hoge %%f in (*.txt) do move %%f D:\hoge\

942 :デフォルトの名無しさん:2010/06/09(水) 08:35:16
移動だけならエクスプローラで一発

943 :デフォルトの名無しさん:2010/06/09(水) 09:30:06
cygwinなくても単体で動くfindぐらい、いくらでもあるよ。
俺も自分で作ったしw

944 :デフォルトの名無しさん:2010/06/09(水) 14:03:23
>>937
>同じ動作をしようと思ったらfor /fを入れ子に…出来ないから
>サブルーチン作ることになるんじゃないかと。

はぁ〜?

945 :デフォルトの名無しさん:2010/06/09(水) 14:12:12
>>936
DropTarget

946 :デフォルトの名無しさん:2010/06/09(水) 16:13:33
DropTargetってなんの関数だろう
レベル高くてついていけないわ

947 :デフォルトの名無しさん:2010/06/11(金) 12:35:33
ttp://msdn.microsoft.com/en-us/library/cc144148(VS.85).aspx

948 :デフォルトの名無しさん:2010/06/11(金) 13:03:40
sendkeys "%fo" & "ファイル" & "{enter}"

949 :デフォルトの名無しさん: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でやる方法はありますか?

950 :デフォルトの名無しさん:2010/06/11(金) 21:21:22
プログラムの仕様ならそういう風

951 :デフォルトの名無しさん:2010/06/11(金) 21:31:20
プログラムを作った経験があれば当然知ってるだろうけど
プログラムの側で優先度を設定できる。

952 :デフォルトの名無しさん:2010/06/11(金) 23:21:09
>>950
>>951
プログラムには詳しくないのですが、
起動後に「高」に変更は出来ます。

MPC自体が、起動時に優先度を「通常」にする
ということでしょうか?

953 :デフォルトの名無しさん:2010/06/11(金) 23:27:37
MPCの設定を見たら、優先度の項目がありました。
ソースは見てないけど、多分、内部で「通常」にしてるのかと思います。
ありがとうございました。

954 :デフォルトの名無しさん:2010/06/13(日) 01:21:19
ちょと質問
Find の返り値をIF 文で使いたいんだけど
こういう時ってのはイチイチ
echo %str% | find /i /c %ptrn% > %temp%
set /p len=<%temp%
こんな回りくどいことしないと使えないのかな?

955 :デフォルトの名無しさん:2010/06/13(日) 01:25:46
WMI

956 :デフォルトの名無しさん:2010/06/13(日) 01:52:46
>>954
for /f %%i in ('"echo %str% | find /i /c %ptrn%"') do set len=%%i

957 :デフォルトの名無しさん:2010/06/13(日) 02:15:46
>>956
dd
スッキリしたなの

958 :デフォルトの名無しさん:2010/06/13(日) 14:12:46
UNIXならps -efコマンドで実行中プロセスの引数を含んだコマンドラインが表示されるので、
ps -ef|grep `basename $0`で、シェルの多重起動制御ができますが、

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

tasklistコマンド以外を使用する等で、何か解決策はないでしょうか?

959 :958:2010/06/13(日) 14:16:07
環境を書き忘れました。OSはWin2003です。

960 :デフォルトの名無しさん:2010/06/13(日) 14:59:27
そういうプログラムを探すか自分で作れば可能
プログラム板は基本的に自分で作る方向

961 :デフォルトの名無しさん:2010/06/13(日) 15:43:11
>>958
bfindwin でググってごらん

962 :デフォルトの名無しさん:2010/06/13(日) 17:10:33
titleで一意に変えてtasklistで調べればよい

963 :デフォルトの名無しさん:2010/06/13(日) 17:15:57
wmic.exeでコマンドラインわかる

964 :デフォルトの名無しさん: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%%

965 :958:2010/06/13(日) 20:23:16
>>963
wmic process get CommandLine,ProcessId|findstr /i /c:"%~nx0"
でバッチリ、コマンドライン引数を取得できました。どうもありがとうございます。


さらに質問なのですが、多重起動制御にあたり、自分自身のプロセスIDの行は除去しようと思うのですが、
UNIXの"$$"のようなプロセスIDの取得方法はWindowsバッチでないでしょうか?

966 :デフォルトの名無しさん:2010/06/13(日) 20:41:52
Unix使いならmanぐらい知ってるはずだが、
まずはmanに相当するもので調べてみようとは思わなかったのだろうか?

967 :デフォルトの名無しさん:2010/06/13(日) 20:50:23
win上にunixらしき環境でも作って使えばいい。

968 :デフォルトの名無しさん:2010/06/13(日) 22:31:51
wmic.exeのparentprocessid

969 :デフォルトの名無しさん:2010/06/13(日) 22:39:41
>>966
恥かいちゃったねw

970 :デフォルトの名無しさん:2010/06/13(日) 22:48:52
ヘルプ嫁

971 :デフォルトの名無しさん:2010/06/13(日) 22:55:48
>>949
wmi setpriority

972 :デフォルトの名無しさん:2010/06/13(日) 22:57:48
質問いいですか?
UNIXの"$?"のようなものはWindowsバッチでないでしょうか?


973 :デフォルトの名無しさん:2010/06/13(日) 23:00:32
ある

974 :デフォルトの名無しさん:2010/06/13(日) 23:04:52
もしBAT自身でできなくても外部コマンド呼べばたいていのことはできる

975 :デフォルトの名無しさん:2010/06/13(日) 23:10:46
外部コマンドにはヘルプがついているよ

976 :デフォルトの名無しさん:2010/06/13(日) 23:14:14
wmi動かなかった

977 :958:2010/06/13(日) 23:15:00
>>972
%errorlevel%です。大文字小文字の区別はないようです。

>>968
レスありがとうございます。
ですが、parentprocessidはUNIXでいうPPIDにあたるようで、
実行中のバッチファイル自身のプロセスIDではないようです。

978 :デフォルトの名無しさん:2010/06/13(日) 23:17:11
wmic.exeのparentprocessidは何?

979 :デフォルトの名無しさん:2010/06/13(日) 23:17:18
>976
WMI が動作していません。どのようにトラブルシューティングすればよいですか。

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

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

リモート コンピュータへの接続に関して問題が生じている場合は、
ローカル コンピュータ上でスクリプトを実行してみてください。
WMI サービスを再起動します。
WMI リポジトリを再構築します。
すべての WMI コンポーネントを再登録します。
オペレーティング システムを再インストールします。
マイクロソフト製品サポート サービスに問い合わせます。


980 :デフォルトの名無しさん:2010/06/13(日) 23:19:40
リモート コンピュータへの接続に関して問題が生じている場合は、
ローカル コンピュータ上でスクリプトを実行してみる
リモート コンピュータへの接続に関して問題が生じている場合は、
他の操作を行う前にローカル コンピュータ上でスクリプトを実行してみてください。
ローカル コンピュータ上でスクリプトを実行できるのであれば、
「WMI でリモート コンピュータを管理するにはどうすればよいですか」のトピックを参照してください。
ローカル コンピュータでスクリプトを実行できない場合は、次のトラブルシューティング手順を実行してください。

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

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



981 :デフォルトの名無しさん:2010/06/13(日) 23:30:48
'wmi' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

982 :958:2010/06/13(日) 23:39:11
sc start winmgmt

983 :デフォルトの名無しさん:2010/06/13(日) 23:52:46
wmicって処理論理組めないよね〜

984 :デフォルトの名無しさん:2010/06/14(月) 03:56:53
UNIXついでに質問いいかな?
UNIXのsplitのようなものはWindowsバッチにありますか?

985 :デフォルトの名無しさん:2010/06/14(月) 07:14:17
>>984
「Windowsバッチ」って何だよ?

986 :デフォルトの名無しさん:2010/06/14(月) 08:19:07
UNIXのsuのようなものはWindowsバッチにありますか?

987 :デフォルトの名無しさん:2010/06/14(月) 08:31:53
酢??????

988 :デフォルトの名無しさん:2010/06/14(月) 08:38:32
___ ___
  ◎   タコデス

989 :デフォルトの名無しさん:2010/06/14(月) 08:43:59
___ ___
  ◎   酢タコデス
/ | | | \


990 :デフォルトの名無しさん:2010/06/14(月) 08:52:34
>su -d -a -k -o

991 :デフォルトの名無しさん:2010/06/14(月) 10:01:51

゜ロ゜ < イカデス




992 :デフォルトの名無しさん:2010/06/14(月) 10:14:28
スルメwww

993 :デフォルトの名無しさん:2010/06/14(月) 10:18:01

^.^ < スルメデス


994 :デフォルトの名無しさん:2010/06/14(月) 10:55:52
いい年こいたおっさんがこんな事やってるのかと思うと悲しくなってくるね

995 :デフォルトの名無しさん:2010/06/14(月) 11:39:55
>>986

>su -r -u -m -e

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

997 :デフォルトの名無しさん:2010/06/14(月) 11:50:36
>>986

>su -m -a -t -a

998 :デフォルトの名無しさん:2010/06/14(月) 11:55:17
すまた?

999 :デフォルトの名無しさん:2010/06/14(月) 11:58:32
素股w

1000 :デフォルトの名無しさん:2010/06/14(月) 12:03:19
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

222 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)