[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 07/26 10:45 / Filesize : 187 KB / Number-of Response : 837
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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

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

3 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 11:37:18 ]
【関連スレ】
DOSでプログラミング
pc11.2ch.net/test/read.cgi/tech/1047001533/
HTAをもっと流行らせる計画 Part2
pc11.2ch.net/test/read.cgi/tech/1220874815/
WSH(・∀・)スレッド! Part 3
pc11.2ch.net/test/read.cgi/tech/1208948450/
Windows板:お前ら、wsh使ってますか? Part7
pc11.2ch.net/test/read.cgi/win/1190548945/
Windows板:Windows PowerShell 2.0
pc11.2ch.net/test/read.cgi/win/1221046998/
Windows板:初心者〜管理者まで必読!コマンドライン(DOS Pt.7)
pc11.2ch.net/test/read.cgi/win/1217738171/
Windows板:MS-DOS・Win3.1総合スレッド2.01
pc11.2ch.net/test/read.cgi/win/1212957424/
OS板:DOS全般を語るスレ 2
pc11.2ch.net/test/read.cgi/os/1179114566/
OS板:■★▲DOSはまだ現役! Drive.B:
pc11.2ch.net/test/read.cgi/os/1046875141/
昔のPC板:MS-DOS総合スレッド 2
gimpo.2ch.net/test/read.cgi/i4004/1144778720/


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

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

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

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

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

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

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



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

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


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

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

13 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 20:30:03 ]
>>10
つかえないんだっけ?

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

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

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

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

test.xml

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



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

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

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

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



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

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

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

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

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

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

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


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

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

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

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



31 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:57:23 ]
>>28
ファイルにリダイレクトしてから、forで取り込むとか

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

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

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

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

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

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

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

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

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

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

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



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

42 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 15:34:30 ]
>>28-33

44 名前:デフォルトの名無しさん mailto:sage [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) mailto:sage [2009/06/16(火) 20:09:17 ]
システムのお守りを任されて一ヶ月。毎日オラクルと日次バッチのログ確認をしているの
ですが質問をさせてもらいやす。

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

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

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

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

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

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

46 名前:(2/2) mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:17:13 ]
バッチファイルよりWSH向きな気がする
Win板のWSHスレかコマンドスレ行ってみたら?

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

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

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

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


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



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

52 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 16:26:10 ]
x のように、別ディレクトリのカレントディレクトリを内部で帰るバッチをcallした後は、
o のように、カレントディレクトリを内部で変える別ディレクトリのバッチをcallした後は、

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

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

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

57 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 00:17:55 ]
%%i:~0,4
なにこれ?こんなのないだろ?

60 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 00:43:57 ]
応用というより妄想だよ。できない。

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


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

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


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

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

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

68 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 13:41:18 ]
全部

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


73 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 14:46:25 ]
それネタだから

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


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


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



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

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

hoge.bat > log.txt

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

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

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

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

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

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

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

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

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

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

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

>>89
それはww



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



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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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


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

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


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



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

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

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

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

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

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

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

117 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 15:47:22 ]
なにそれきもい

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

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



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

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

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

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

125 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 22:31:27 ]
z:\bat(
が存在しない

127 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 22:42:49 ]
すいませんG:\のところはz:\だと思ってください

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

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




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

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

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

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

135 名前:119 mailto:sage [2009/07/14(火) 05:47:27 ]
>>131
つまらん。

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

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

ひでぇw

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

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

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



141 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 13:55:13 ]
すいません付け加えます。
このバッチファイル名のファイル名は reboot.bat です。

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

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

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

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

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

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

148 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 09:17:13 ]
>>148
more < fukust.txt:memo.txt


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



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

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

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

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

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

156 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:20:45 ]
%i -> %%i

158 名前:156 mailto:sage [2009/08/05(水) 21:28:17 ]
dd

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

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



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

162 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:37:36 ]
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 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:38:07 ]
そのスレ、何回かバッチ出てるね

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

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


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

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

167 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:14:28 ]
offlineで使えないよ

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

javac %~n1.java
java %~n1
pause

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

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



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

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

173 名前:222.248.109.70 mailto:age [2009/08/17(月) 17:45:38 ]
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

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

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

----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください

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

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

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

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

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

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

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

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

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




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


182 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 20:22:45 ]
>>178
ありがとうございます。
もうちょいヒント下さい。。。

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


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

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

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

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

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

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


190 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 19:23:18 ]
prompt文字列を使って特殊文字をファイルに吐き出す方法って
どうやるんだっけ?

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

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


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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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


209 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 16:15:44 ]
set path_



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

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

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

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

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

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

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

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

217 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 12:37:02 ]
nul はDOS窓
null がコマンドプロンプト

219 名前:119 mailto:sage [2009/09/10(木) 16:14:29 ]
>>218
(゚Д゚)ハァ?

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



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

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

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

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


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

225 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 16:52:52 ]
Outlook+cron最強

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

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

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

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



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

232 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 15:56:13 ]
mshta.exe "about:<marquee>テレビの時間</marquee>"


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

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

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

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

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



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

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

244 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 14:43:45 ]
delimS Sがあるだろ?
eolS? Sがないだろ?

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

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

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

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

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



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

252 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 00:08:59 ]
JOKEだとしても、面白くないよ

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

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

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

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

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

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

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



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

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

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

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

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


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

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

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


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

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

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




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


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

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

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


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


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

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

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

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

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



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

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

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

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

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

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



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

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

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

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

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

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

284 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 14:27:06 ]
for文変数のコピーは可能ですか?
下のようにしましたが動きませんでした


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

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

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

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



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

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

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

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

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

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

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

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

296 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 18:46:01 ]
for %%i in (*.txt) do (
set k=%%i
setlocal EnableDelayedExpansion
echo !k!
endlocal
)

298 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 19:24:22 ]
何の根拠もないてきとーレス

”で括ってみたら?

302 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 21:00:06 ]
たぶんアンダーバーが使えない

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

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

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

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

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


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

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


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



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

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

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


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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

346 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 18:51:40 ]
wmic logicaldisk c: get freespace

349 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 18:22:39 ]
ロボコップがコマンドコムの読み込み後にバイオスをロードしました



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

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

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

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

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


ないか…

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

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

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

357 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 18:09:56 ]
>>353
folder.copyhere
folderitem.modifydate
でだめか?

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

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

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



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

362 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 23:13:10 ]

OSはWindows XP HomeのSP3です。

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

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

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

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


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

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

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

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



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

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

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

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


374 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 23:17:03 ]
>>370 標準のコマンドのみでは無理
そんなことはなかろう

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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



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

またお前か

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

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

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

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

397 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:20:18 ]
>>398
ありがとうございます!できました!

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


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



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

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

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

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



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


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

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


406 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:09:51 ]
if 条件A or 条件B (
処理1
) else (
処理2
)

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

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

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

410 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 17:10:49 ]
more|notepad /dev/stdin
みたいなことはできないのですか?

412 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:40:05 ]
こんな感じか?
echo echo start "" コマンド.bat "引数" ^>B.bat >A.bat

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

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


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

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

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

(^)
となる

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

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

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

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

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



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

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

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

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


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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

466 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 21:33:20 ]
>>465
ありがとうございました
助かりました

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

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

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

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

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



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

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

ダメじゃんw

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

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

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


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

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


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

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

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

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



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

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

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

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

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

484 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 22:05:22 ]
tokens=14 ってなんじゃそら。
skip=n でn行飛ばせるって知ってるよな?

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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



501 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 12:12:03 ]
そこまで人の手でやれよ。

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

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

codepad.org/xzEwdV3R

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

今コンパイラ探してる

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

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

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


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

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

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

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



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

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


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

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

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

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

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

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

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

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

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

520 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 17:02:50 ]
バッチファイルの引数をプラス記号で繋ぐにはどうしたら良いでしょう。例えば、

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

ここの %* を、引数の数に合わせて %1+%2+.... とやる方法です。



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

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

522 名前:デフォルトの名無しさん mailto:sage [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 "www.google.com/search?lr=lang_ja&ie=sjis&oe=UTF-8&q=%Param%"
----------ここまで

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

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

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

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

codepad.org/GKyUSzKv

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

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

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



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

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

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

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



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

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

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

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

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

536 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:41:21 ]
for /f %%i in ('where %1') do start "" explorer.exe /select,%%i

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

559 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 11:39:09 ]
ランダムの意味わかってないだろ



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

562 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [2010/01/19(火) 15:29:47 ]
>>562
ありがとうございます!
コピー先は直しましたが、まさに目的は叶いました。
本当、感謝です!

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

>>560

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

579 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 20:48:04 ]
一時ファイル使わんとでけんのか?

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

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

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

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

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

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

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

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

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



591 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 19:53:21 ]
どっちもメモ帳で入力できない

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

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


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

596 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 22:57:12 ]
あほ

599 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 23:58:51 ]
callした先で書き換えちゃってるんだろ
call先でsetlocal 〜 endlocalしとけ

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

603 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 11:12:49 ]
%INPUTPATH%
が \ で終わっていないに 1000ガバス。

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

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

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

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

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

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



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

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

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

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

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

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

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


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

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

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

620 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 02:06:53 ]
切れてないよ

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

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

>>623
さぶぅ

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

639 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:23:12 ]
ワイルドカードはファイル名を保持してない



641 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:44:18 ]
>640-643
みなさん、ありがとうございます!
試してみましたところ、ばっちり動作しました。
ただ、ばっちり動作しますがプログラムの挙動を自身がまだ理解できてない状態なので
これらを元に色々調べてプログラムを練ってみたいと思います。

645 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:23:41 ]
5スレ目でいうのもなんか変だが、

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

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

コマンド ライン リファレンス
technet.microsoft.com/ja-jp/library/cc778084(WS.10).aspx
バッチ ファイルを使用する
technet.microsoft.com/ja-jp/library/cc758944(WS.10).aspx
こっちは、上からリンクあるからイランと思うけど。

646 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:24:35 ]
コマンド シェルの概要
technet.microsoft.com/ja-jp/library/cc778084.aspx

アチャー

647 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:25:38 ]
orz

648 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 09:53:38 ]
自分の使ってるOSのヘルプならいつでも見れるはずだが、
ヘルプすら読まずに質問するやつが多すぎるという嫌味?

649 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:59:37 ]
>>646
Runasなんてあったのかー

650 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 15:52:52 ]
MSのヘルプは探すのが面倒



651 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 16:15:51 ]
ヘルプより掲示板で聞いた方が早いし楽

652 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 01:00:53 ]
WindowsXPのコンソールで、
unixでいうところのsmbclientを使うには、
どのようにしたらよいでしょう?
smbはもともとWindowsのプロトコルで、GUIに統合されているため、
smbclientのコマンドラインプログラムというのがあるのかないのか、
よくわからないのですが、
パスワードつきの他のマシンに起動時に自動接続するのに、
ネットワークドライブに割り当てただけではだめだったので、
それならコンソールでコマンドを実行して接続するか、と考えました。
ご存じでしたらアドバイスをお願いします。


653 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 01:04:43 ]
net

654 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 01:21:50 ]
>>653
thanks

655 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 03:13:43 ]
MSのヘルプは詳しいのと詳しくないのと差があるからな
makecabとかまったくわからんしfsutilとか独自すぎて笑える
cmdのヘルプもわかりにくい部類になるだろう
書いてあるのかないのかよくわからんことも多いし

掲示板のほうが楽しいとかはさすがにあれだがw

656 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 21:54:55 ]
あのさあ...
objShell.Run "コマンド1 | コマンド2 | sort"
とかをスクリプトでするとしましょう。
そのとき、途中のコマンドが
.vbs とか .wsf の//job:XXX として、
そのなかに Wscript.Sleep 100 があるとパイプラインが詰まる?
ことないですか?


657 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:37:57 ]
それ詰まるもなにもパイプラインにならんだろ?


658 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:48:45 ]
えー...。 ごめーん
コマンド1 とかは
Cscript //nologo XXX.vbs で、
XXX.vbs や YYY.wsf //job:ZZZ 内部では
Wscript.Echo とか Wscript.StdOut.WriteLine 使用

ではどうだろう。
あげたれ


659 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:07:30 ]
コマンド1がパイプラインの機能を持ってるのか?という話だが?
cmd /cならパイプラインの機能を持ってるが?

660 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:29:58 ]
あああ、そのとおり
objShell.Run "cmd.exe /c " & "コマンド1 | " & ...
でした。

で、コマンド1にWscript.Sleep 100 があるとコマンド1で止まっちゃうような。
気がするのです



661 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:09:24 ]
ないです

662 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 21:36:31 ]
ないですね。はてな

663 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 14:29:10 ]
>>663
こんな感じかな?
× set FOLDER=%1
○ call set FOLDER=%%%1%%

665 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 18:01:21 ]
>>664
できました。ありがとうございました。

666 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 11:20:25 ]
質問させてください。
パソコンちょっと詳しいからということで、会社の
ネットワーク管理者にされてしまいました。
運の悪いことに、次年度からパソコンの更新が行われ、
Windows XP→Windows 7にOSも変更になりました。
前任の人がWindows XP環境でログインしたときに、
仕事でよく使うフォルダへのショートカットを
ログイン時のバッチファイルで表示させていたのですが、
Windows 7では動作しないみたいなのですorz
Windows 7でバッチファイルでファイルのショートカットを
デスクトップに表示させるにはどうしたらいいでしょうか?
いろいろググッてみましたが、それ用のフリーソフトが
あるみたいなのですが、Windows 7では動きそうにないんです...

667 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:05:03 ]
pc12.2ch.net/test/read.cgi/win/1243134619/
管理者スレ

668 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:08:37 ]
回答させてください
>ログイン時のバッチファイルで表示させていたのですが、
>Windows 7では動作しないみたいなのですorz
動作するかしないかはっきりさせろ!
実行してみりゃどういうエラーが出てるかわかるだろ?

669 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:23:23 ]
>>668
前任の人の設定のままでXPのマシンをログインすると
ちゃんとショートカットでるのですが、7だと、
エラーメッセージも出ず、スルー状態なんです。
(つまり何もおきない)
他のソフトインストールして試して見ます。
このスレの人で、ショートカット表示
させるコマンドライン知っている人い
ましたら、ご教示ください。
おながいしまつ。

670 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 14:29:35 ]
ドメインへのログオンスクリプトならポリシーの適用してない/できてないとか。
そもそもhomeでドメインに参加できないとか。
ショートカット表示の意味がわからない。
エクスプローラ上で表示させる事なのか、リモート資源の接続先をポップアップさせる事なのか。
とにかく5W1Hで明確に書いてくれないと全くわかんね。



671 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 15:20:16 ]
>>670 多分668さんも同一人物
とても親切にしていただいてありがとうございます。
前の設定者はドメインに参加する時点で、windows 2003 server
のActive Direcrory処理の際に、ログオンするときのバッチファイルに
デスクトップにショートカットを表示させるようにしてたみたいです。
というのも、管理者以外はディレクトリ構造も知らないので、
それを全員に分からせてセキュリティレベルを下げるより、
自動的にショートカットを表示してクリックさせるという形に
したようです。確かにパスを追っていけばそのファイルに到達しますが、
わざとそうさせないみたいです。(その方針には私も賛成します)
長文すみません。

672 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 15:22:13 ]
で、デスクトップへ通常使うけど、
パスを探られたくないフォルダへの
ショートカットを入れたいということです。
パソコンしかさわったことないので、
こういう具体的かつ実践的なご指摘はとても
勉強になります。ありがとうございます。

673 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 17:01:32 ]
ポリシー設定のなかにもデスクトップの表示に関する項目があった気がする
このスレ的にはログオンスクリプトの中でNET USEで接続しているんだろうな位・・・もしかするとSUBST?

674 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 17:24:57 ]
ありがとうございます。
明日は日曜ですが、隠れ出社して試してみます。

675 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 19:12:15 ]
バッチからショートカットを作るのはむずかしかろ
インターネットショートカットならかんたん
(
echo;[InternetShortcut]
echo;URL=\\server\sharename\folder
) > desktop\hoge.url

676 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 19:34:54 ]
どういう風に作ってたかしらんけど、フォルダ構造が変わったからじゃないの?
大抵は新しいパスへリダイレクトしてくれるけど、AllUsers→Publicの部分はうまくいかない模様

XP以前:C:\Documents and Settings\All Users\Desktop
Vista以降:C:\Users\Public\Desktop

677 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 20:15:31 ]
>>676
さすがに会社のサーバ?でユーサフォルダ以降のフォルダ使わないだろw
まさか、な・・・?

678 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 00:15:40 ]
>>675-677
ヒントありがとうございます。
まさかもありえるのでちょっとやってみます。

679 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 05:55:24 ]
規模にもよるけど引継ぎ書とか運用手順書とか必要でしょ。
次の人に渡すにしても。
前任者に要求しとかないとまずいね。

680 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 12:55:36 ]
「ログオンするときのバッチファイル」を、クライアントのWindows7マシン上にコピーして
コマンドラインから実行してみたらエラー内容が分かるんじゃない?



681 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 18:47:20 ]
みなさんありがとうございます。
バッチファイルが別のバッチファイル呼び出すような
入れ子構造になっていることが判明し、解析に手間取ってます
というか、そもそもDOSのコマンド知らないorz
一から調べていますので少々時間くださいまし。

682 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 22:56:17 ]
cmdでlinuxの mkfifo hoge 的なことってできますか?

684 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:20:27 ]
普通のファイルで1 writer n readerができるが?

685 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 00:10:36 ]
>>688
詳しいエラー教えて

690 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 03:44:39 ]
文字を入力させて、その文字でファイル名を判断して該当のフォルダに移動するバッチプログラムは需要ある?
別の言語では時々見るんだけどコマンドプロンプトでやってるの見たことないからさ

blog-imgs-42.fc2.com/s/h/t/shtpg/fri.txt

693 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 03:57:06 ]
>>691
圧縮形式や作成先はLhaca自体の設定(レジストリ)に依存するようだよ
Lhacaはコマンドラインで使わないほうがいいな

694 名前:693 mailto:sage [2010/03/08(月) 04:00:46 ]
と思ったらレジストリじゃなくて
"C:\Windows\Lhaca.ini"
なんてのが勝手に作成されてた

行儀が悪すぎる!

695 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 08:33:40 ]
>695をちょっと訂正。
macros.lzh → aaa.lzh

いずれにせよ"%USERPROFILE%\デスクトップ\"を指定するのがポイント。
ただし「窓の手」などでデスクトップのフォルダを任意のフォルダに変えてる場合、この手段は使えない。

697 名前:デフォルトの名無しさん [2010/03/08(月) 23:24:41 ]
>>691
バッチというかコマンドラインでやっても問題ない
アーカイバってどんなのがあるの?

一見しただけじゃわからないからな

698 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:03:50 ]
有名どころならWinRARとか7zipでもできるよ

699 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:31:57 ]
コマンドラインならundll.exe使っとけ。統合アーカイバDLLならどれでもおk。

700 名前:693 mailto:sage [2010/03/09(火) 01:48:24 ]
圧縮できればいいのなら makecab という手もある



701 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:34:51 ]
CMDで↓の様なトランザクション処理はどのように記述すればよいのでしょうか?
これがないと怖くて処理が書けないのですが。

PowerShell 2.0の新機能(5) ――トランザクション編(1/3):CodeZine
codezine.jp/article/detail/4944

703 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:31:12 ]
@echo off
powershell syori.ps1

704 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 17:13:21 ]
図解入門 よくわかる最新データ圧縮技術の基本と仕組み
―情報圧縮技術とアルゴリズムの基礎講座
How‐nual Visual Guide Book

圧縮アルゴリズム―符号化の原理とC言語による実装 C magazine


706 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 12:10:47 ]
Windows Vistaのバッチファイルについて質問です。
EXEの起動でパラメータを渡す際スペースがあるものは""
で囲むと思っていたのですが
test.exe "C:\Dir 1\"
とすると最後の\が消えて
C:\Dir 1"
として受け取ってしまうようでした
試しにVCで__argvを確認してもそうなっているようでしたが
どんな書式規則でこうなるんでしょうか?




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

test.vbs "C:\Dir 1\"

708 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 12:30:02 ]
>>707
確認してみましたが、確かにVBSだときちんと受け取ってますね・・。
理由は気になりますが、書式として間違っていたわけではないと
わかっただけで大収穫です。
ありがとう。


709 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 14:19:30 ]
>>706
test.exe "a b c d"の中に"を入れるときは、\"でエスケープするだよ
test.exe "a \"b c\" d"

710 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 19:29:21 ]
>>709
おお!なるほど!エスケープを使えたとは知りませんでした。
すっきり解決しました。ありがとう。





711 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 20:03:53 ]
exeによって解釈は違うから永久にすっきりしないよ。

712 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 23:12:40 ]
某コマンド 某オプション | more | findstr /b /e /c:"hoge foo %fuga%"

714 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 23:27:56 ]
/x

715 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 01:51:47 ]
動画ファイルだけどシステム属性が付いてるファイルがあります。
ググったところ、コマンドプロンプトから「attrib ドライブ名:\ファイル名.拡張子 -s」で解除できることがわかりました。
いちいちコマンドプロンプトからやらないで、バッチファイルを作って、それを実行することで解除するようにするにはどういう記述を書けばいいのでしょう。


716 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 02:19:01 ]
pc12.2ch.net/test/read.cgi/software/1265545912/

717 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 10:01:26 ]
>715
@echo off
attrib ドライブ名:\ファイル名.拡張子 -s

718 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 10:12:28 ]
>>711
Windowsのコマンドで、きえる、\"以外の例を挙げてみろよ

719 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 10:54:37 ]
"C:\Program Files\Internet Explorer\iexplore.exe" "www.ya\"hoo.com"


720 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:42:01 ]
無理すんな



721 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 19:20:51 ]
msdn.microsoft.com/ja-jp/library/cc429051.aspx
CommandLineToArgvW 関数
対応情報
Windows NT: バージョン 3.5 以降を使います。
Windows: サポートされていません。
Windows CE: サポートされていません。


別に無理していないけど、Windowsでサポートされていない関数の挙動を
Windows標準とみなすのはどうかと思うわけよ。
実際いろいろなexeがそれぞれ好き勝手に解釈しているし。

722 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 19:55:53 ]
そんな便利なものがあったのか

723 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 20:56:58 ]
NT標準でいいが 9xとかいらね

724 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 22:29:59 ]
9xは__argv、NTはCommandLineToArgvW

725 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 17:12:30 ]
>>721
無理すんな

726 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 16:59:48 ]
環境変数のuserpartってなに?

727 名前:JGSDF mailto:woman [2010/03/21(日) 00:49:25 ]
syosinsya

728 名前:JGSDF mailto:woman [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 mailto:sage [2010/03/22(月) 08:36:22 ]
引数%1がフォルダだった場合とファイルだった場合で
処理分岐するバッチファイルを作成したいのですが、
修飾子%~a1で取得できる属性には、ディレクトリとファイルを区別する
属性がなく、困っています。



731 名前:730 [2010/03/22(月) 11:28:45 ]
OSはWindows Server 2003です。
書き忘れていました.

732 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 12:55:32 ]
あるけど?

733 名前:730 mailto:sage [2010/03/22(月) 13:17:56 ]
>>732
どうすればよいか教えて頂けませんか?

734 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:13:34 ]
dirかcd

735 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:25:02 ]
if exist dirname\con echo dir

736 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 18:17:09 ]
cd foo && echo succ || echo fail

737 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:26:33 ]
FOR /F "eol=-" IN ("%~a1") DO ECHO FOLDR
FOR /F "eol=d" IN ("%~a1") DO ECHO FILE

738 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:46:12 ]
OS:Windows2003 server,WindowsXP
複数のCSVファイル(yyyymmdd_hhmmss.csvのフォーマット)
をmoreコマンドでひとつのcsvファイルにマージする際、
プライマリキーにおいて重複するレコードを最新のレコード以外
削除するほうほうってないですかね。
バッチ単体で。

739 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:14:40 ]
ない

740 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:40:00 ]
dir /ad /b "%~dp1" | findstr /x "%~nx1" && echo foruda



741 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 18:37:03 ]
>>736
cdが変わるからやだ

742 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 19:01:51 ]
>>735
"dir name"だと駄目やんけ

743 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:29:25 ]
cd "c:\System Volume Information" && echo succ || echo fail


744 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:34:37 ]
>>741
pushd&popd使えよ

745 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:45:39 ]
つcmd /c cd

746 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:35:07 ]
バッチ内でwmic process get や wmic ntevent を使用して、結果をテキストファイルに出力しようとしています。
ここで、wmicの出力がUnicode、別のリダイレクト部分(START、ENDなどのコメント)がSJISで出力されてしまいます。
wmicの出力をSJIS(CR+LF)にする方法はありますでしょうか。


747 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 01:01:55 ]
ttp://scripting.cocolog-nifty.com/blog/2009/09/wmic-6efe.html

748 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 19:05:39 ]
>別のリダイレクト部分(START、ENDなどのコメント)がSJISで出力されてしまいます。
これをunicodeで出せばよい

749 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 00:35:26 ]
>>740
rootに使えん

750 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:31:19 ]
>>742
if existはどうやっても駄目だな



751 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:43:39 ]
if exist "dir name\*" は?

752 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 02:11:47 ]
pushd %1&&popd
echo %errorlevel%

754 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 07:01:38 ]
>>752
>ふと思ったのは %1 を渡された時にたとえば aaa と aaa========== を見分けるにはどーすりゃいいんだ?
ヒント:findstr /x

755 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 09:22:25 ]
>>754
findstr をしようにも、たとえば
echo %1
というバッチファイル test.bat で
test.bat aaa と test.bat aaa===== でどちらも aaa となって末尾の = が拾えない
のを「見分けるにはどーすりゃいいんだ?」と思ったんですが。
オレ何か勘違いしてる?

756 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 14:29:01 ]
>>751
あまいな .もない、空のフォルダってぇのがあるのだ
>>752 >>753
アクセス権がないフォルダはファイルなのか
>>755
別の話を絡めるな
test.bat "aaa====="

757 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 14:35:30 ]
厳密にやりたきゃ別の言語使えよ。もう質問してる奴もいないし秋田。

758 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 15:56:47 ]
別の言語使いたけりゃ他スレへ行けよ

759 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 17:34:27 ]
厳密にやりたきゃ%~a1を使えばよいだけの話

760 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:31:02 ]
あるソフトウェアのバージョン違いが3つほど入ってるんだけど
デスクトップに同じ見た目のアイコンが3つあるからややこしくて。
バッチファイルをクリックすると上下ボタンでどのソフトを起動するか
選択できて、エンター押すと実行っていうのを作りたいんだけど
誰か作ってくんない?
イメージ的にはウィンドウズをセーフモードで起動したときに
選択する画面がまずでてくるんだけどあんな感じ☆



761 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:56:46 ]
アイコン変えればいいじゃん

762 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 18:03:24 ]
デスクトップに3つあるアイコンそれぞれに
異なるショートカットキーを指定すればいいじゃん

763 名前:760 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:38:46 ]
Enterなしにキー入力を受け取る方法がないから無理

765 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:47:41 ]
指定したファイルをホームページ(FTPで)にバッチファイルで送信することは可能でしょうか?

766 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:17:58 ]
if 1==2 (
start notepad
start mspaint
start calc
)


768 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 21:11:49 ]
大昔はそういうメニューが普通にあったが、GUIで死滅したな
あってもブート選択画面ぐらいか

769 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 21:15:15 ]
1文字読み取って制御を返すツール作ればいろいろ用途が広がるよ。
2ストロークで26^2個のツール呼び出せるランチャ作ったけど軽くて便利。

770 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 22:05:34 ]
powershell使えばカーソル選択メニューが作れるよ



771 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 22:32:52 ]
>>765
できるよ
バッチファイルとまた一つftpコマンドを書いたテキストファイルが必要になる

772 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 13:10:44 ]
>>771
遅レスすみません。
ありがとうございます。おかげでできました。

773 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:37:47 ]
コマンドプロンプトに表示された文字を(txt等)に出力ってできますか?

774 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:42:46 ]
無理

775 名前:773 mailto:sage [2010/03/29(月) 22:54:06 ]
すみません、自己解決しました。

test.bat > log.txt

776 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:40:05 ]
>>775
それだと標準エラーがファイル出力できないよ

777 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:48:00 ]
test.bat > log.txt 2<&1


778 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:59:44 ]
>>776-777
そうなんですか、知りませんでした!
ありがとうございます。

779 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 11:24:07 ]
質問です。

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

があるとすると
拡張子.bakだけ一括で名前変更できるでしょうか?

780 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:17:31 ]
できないわけがない



781 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:35:10 ]
ren *.bak *.hoge

782 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:51:39 ]
それじゃ
a.txt.baka
ab.html.aho
abc.exe.baka

拡張子.bakaだけ一括で名前変更できるでしょうか?

783 名前:779 mailto:sage [2010/03/30(火) 14:02:57 ]
すみません、質問の仕方が間違えていました。
bakの部分だけ消したいんです。

a.txt.bak→a.txt

784 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 14:17:18 ]
ren *.bak *.

785 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 15:07:17 ]
>>784
ありがとうございます
できました

786 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 16:00:55 ]
hogeよりはahoやbakaの方が好き
おっと、kusoも使うなw

787 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 02:28:58 ]
for /?

790 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 02:28:59 ]
>>788
find使って >baka.txtとかで出力

うまく使えば一つのバッチファイルで色んなバッチファイルを作成することができるから便利



791 名前:デフォルトの名無しさん [2010/04/06(火) 07:40:04 ]
findは外部コマンド

792 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 07:56:00 ]
>>788
findstr /r "^morning$ ^bye$" > hoge.txt

793 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 09:11:31 ]
>>791
空気読め馬鹿

794 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 09:28:43 ]
料理できないと買ってきた惣菜をならべるぐらいのことでも自慢するんだよ
それ外で買ってきたんだろとあきれられてても本人は満足

795 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 20:43:40 ]
バッチファイルでテトリス作って

796 名前:デフォルトの名無しさん [2010/04/06(火) 22:12:33 ]
>>792
ありがとうございます。
説明が不足してたのですが、必ずしも1行目にmorningがあって、3行目にbyeがあるわけじゃない場合に
1行目、3行目を抽出って出来るんでしょうか。根本から違うやり方考えた方が良いですかね・・・。

797 名前:792 mailto:sage [2010/04/06(火) 22:28:25 ]
findstrコマンドは/cオプションを指定しない場合は、
二重引用符内で半角空白区切りで指定されたキーワードを
OR検索できるんだけど、
やりたいのは、特定キーワードで抽出したいんじゃなくて、
特定の行番号を抜き出したいってこと?

798 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 23:05:41 ]
下のようなのを作る場合変数iの引数は12個まで
とかいう決まりがあるのでしょうか?

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

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

と言われます。ちなみに12個まではOKでした。

799 名前:デフォルトの名無しさん mailto:sage [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以降で違うみたい。
support.microsoft.com/kb/830473/ja



801 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 23:25:24 ]
>>799,800
たぶん、ファイルの長さだと思います。
ありがとうございました。

802 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 23:02:04 ]
>>801
>たぶん、ファイルの長さだと思います。
ファイルサイズは関係ないだろ

805 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 19:53:59 ]
しかしどうやって動かすんだ?
動いたときアクティブなウィンドウは?

809 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 20:05:00 ]
想定の範囲外です(キリッ
適当なフリーソフト使え

810 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 19:17:26 ]
ローカルでphpスクリプトを動かす際に一連の流れを
バッチファイルでまとめてしまおうと思ったのですが

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

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

どのようにすればすべての処理が行われるでしょうか?



811 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 19:36:02 ]
cd "ディレクトリ1"
httpd.exe
taskkill /im httpd.exe
cd "ディレクトリ2"
C:\php\php.exe batchtest.php

812 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 20:56:35 ]
start httpd.exe

813 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 07:38:21 ]
>>811
ヒネリがないので笑えん。

814 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 12:59:02 ]
>>813
素直な奴だな。

httpd.exeを終了させないとtaskkillが実行されないという二段オチなのに。

815 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 14:49:58 ]
下記のバッチ内、:mpexec_core にある if 文で落ちてしまいます。
書き方に何か問題があるのでしょうか?
ideone.com/OvSYW

816 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 15:10:11 ]
その行だけじゃわからないよ
環境変数に適切な値が入っているならちゃんと動くように見える
echoの表示やエラーメッセージはどうなってんの?

エスパー初級な解答
if "%xxx%" geq "%yyy%"のように""で括れば
環境変数が空の場合でも落ちる事はなくなるはず

817 名前:815 mailto:sage [2010/04/13(火) 15:25:07 ]
>816
if "%MP_MAX%" geq "%MP_NUM%" (
に変更しても落ちました。
直前の出力は
if 1 geq 1 (
なので、両方に1が入っていることは確認済みなのですが・・・。
エラーは 「コマンドの構文が誤っています。」 です。

818 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 18:43:38 ]
エラーの詳細が出るようにバッチの先頭におまじないを書いておく

echo W 100 2 0 200 | debug

819 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 18:47:20 ]
>>817
()のなかの命令が不適切なのでは?

820 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 19:54:16 ]
( ) の中で SET を使うのはやめといた方がいいよ
GOTO 文などに置き換えれば動くはず



821 名前:815 mailto:sage [2010/04/13(火) 20:06:10 ]
>>819,820
()の中を関数化したら正常に動作しました。
ありがとうございました。

822 名前:デフォルトの名無しさん [2010/04/13(火) 20:43:32 ]
すべてのウィンドウを「最新の情報に更新」にするバッチってありますかぁ?

823 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 22:48:22 ]
ないよ

824 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 02:26:10 ]
ありがとうございました。

825 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 17:07:20 ]
作成日時は%~t1で取れますかぁ?

826 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 17:14:10 ]
ヘルプ見るの面倒

827 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 09:14:28 ]
>>825
こういうこと?

for /? より

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



828 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 14:10:17 ]
それ更新日時

829 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 18:25:03 ]
>>828
827じゃないが、ファイルの日付が何になるかって、
環境変数で変更できなかったっけ?
まぁ、できなくても、作成日時だったら、
他の手段で、何とでもなるから困らないけどね

830 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 20:08:20 ]
それDIRCMD



831 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 06:44:59 ]
>>814
だから、それは一目見て分かることで何の面白味もないの。

832 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 07:35:16 ]
>>810
httpdが無いと動かないようなphpなら
netstatとか使って、httpdが起動完了したことを検知しないと駄目な気がする
まぁ、batchtest.php内で成功するまで待つって手もあるけど…
あと、最後にhttpdを止める必要はないの?
動かしっぱなしなら、httpdをバッチで起動する意味はないと思うけど?

833 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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以外はただの設計とアルゴリズムだし。
技術的に困ったらまたお願いします。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<187KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef