適材適所で GUI と CUI を組み合わせて、 (゚д゚)ウマー
DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
コマンドラインインタフェースに関するネタならなんでもOK。
質問も歓迎だけど、自分で調べて勉強する努力も忘れずに。
前スレ
初心者~管理者まで必読!コマンドライン(DOS Pt.7)
http://pc12.2ch.net/test/read.cgi/win/1217738171/
過去スレ
1 http://pc.2ch.net/win/kako/1002/10023/1002392089.html
2 http://pc5.2ch.net/win/kako/1013/10138/1013833995.html
3 http://pc8.2ch.net/test/read.cgi/win/1062775949/l50
4 http://pc8.2ch.net/test/read.cgi/win/1116131036/l50
5 http://pc11.2ch.net/test/read.cgi/win/1152544955/l50
6 http://pc11.2ch.net/test/read.cgi/win/1176558776/
7 http://pc12.2ch.net/test/read.cgi/win/1217738171/
対立状態のスレ
【.cmd】 バッチファイルスクリプト %5 【.bat】
http://pc12.2ch.net/test/read.cgi/tech/1242268171/
srh ファイル内容検索コマンド
http://www.hir-net.com/soft/win/srh.html
あげ
NT版UNIX-like tools Version 0.14
http://www.piedey.co.jp/softs/ntuxtl014.html
>>5
これとどう違うの
http://unxutils.sourceforge.net/
fc/?
findstrやsed、grepなどで \ や " を使いたいのですが、
表示はできるのに、 > fin.txtとリダイレクトすると永遠に処理待ちやエラーになってしまいます。
|FINDSTR: 開くことができません (fin.txt)
|grep: >: Invalid argument
|grep: fin.txt: No such file or directory
*nixなどのエスケープ文字としての \ と、コマンドプロンプトとは異なるのでしょうか?
にしても、リダイレクトにするとエラーになるのがイマイチわかりません。
" を試していた時の hoge.txtは、こんな感じです。
"hoge"
"moge"
moge
hoge
[EOF]
試したコマンドラインは、こんな感じです。
c:\>grep "hoge\"" hoge.txt > fin.txt
c:\>grep "hoge\"" hoge.txt > fin.txt
c:\>grep "hoge\""" hoge.txt > fin.txt
c:\>grep "hoge^"" hoge.txt > fin.txt
c:\>grep "hoge^""" hoge.txt > fin.txt
正しいコマンドラインを教えてください。よろしくお願いします。
grep hoge^" hoge.txt > fin.txt
grep ^"hoge\^"^" hoge.txt > fin.txt
>9
できました!ありがとうございます。
コマンドプロンプトのエスケープ文字が ^で、コマンドラインとして与える時には、
キーワードの対象文字全てに ^しておけばいいんですね!間にスペースを挟む場合も、これでいけました。
|C:\>grep ^"hoge hoge\^"^" "hoge hoge.txt" > "fin hoge.txt"
こっちの例ではダメでした。処理待ちになってしまいます。動作確認は、XP/Vistaで。
|c:\>grep hoge^" hoge.txt
|c:\>grep ^"hoge hoge.txt
別件。
move hoge.txt temp
move moge.txt temp
(しかも、tempディレクトリを作り忘れたまま)で、やってしまいました。
コマンドラインだと、上書き確認されるので、batにも、そのまま書いてたら…
batの場合は明示的に/-Yつけてないと、確認無いんですね…。
油断してました。いや、こんなコトに今まで気づかなかった自分が情けない。
@echo off
setlocal enableextensions enabledelayedexpansion
set t=abcdefg
echo !t:~0,4!
if !t:~0,4!==abcd echo !t:~0,4!
実行結果
abcd
4!==abcd の使い方が誤っています。
何でこうなるのかさっぱり分からないです…
何か根本的な勘違いをしているのでしょうか?
一応今の状況を解説すると
こんな何時間も誰も相手にしないということは警戒されてる時
if "!t:~0,4!"=="abcd" echo !t:~0,4!
でいけるだろ、と書いたら
「そうじゃないんですよ、何でこうなるのかその理由を知りたいんですよ」
と牙をむいてくってかかってくる危険性が文章に仕掛けられている
それでみんな相手にしないと
まあそういうこと
>>11は直しかたもすべてわかった上でわざと聞いてる、と考えるのが妥当
で?どういう意味?
間違いないの?
知らんがな
勝手に想像すればいいだろ
思うのはタダなんだし
if !t:~0^,4!==abcd echo !t:~0,4!
if a;,=a echo a
>>12
> 「そうじゃないんですよ、何でこうなるのかその理由を知りたいんですよ」
この部分は多分にあるけれど
> >>11は直しかたもすべてわかった上でわざと聞いてる、と考えるのが妥当
これは無いです。
>>15で行けるのは分かったがなぜエスケープしなければならないのかが疑問。
if文でカンマって何を意味するんでしょうか?
ヘルプにはそれに関することは何も書いてないし…
ちなみに実際のif文はforの中に書いています。
結構何度もバッチ書いてるのに今まで引っかからなかったのが疑問な位ですが。
;,はトークンの区切り文字、スペース、タブと同じ
http://it-is-it.net/CMD/%C1%B4%C8%CC/%B9%BD%CA%B8%B2%F2%C0%CF/#content_1_12
>>19
ありがたいです。
結構何年もバッチ書いてて初めて知ったようなw
>>12
さっきは気づきませんでしたが
> if "!t:~0,4!"=="abcd" echo !t:~0,4!
これじゃ駄目ですよね。
いけますがなにか?www
>これじゃ駄目ですよね。
牙をむいてくってかかってくる
はい予言的中ww
僕ちゃんなんねんもバッチ書いてまちゅー
けど、出来るかどうか自分では試すことはできません
何年もバッチ書いいてる>>20
>>19に"で区切り文字をエスケープできるって書いてあるだろ
>>19に挨拶して黙って消えりゃいいものを
ひねくれた根性の悪さが災いして一言反撃してやろうという魂胆が墓穴掘ったな
>これじゃ駄目ですよね
とうどういうこと
パソコン持ってないの?バッチ書いて動かせば1秒で結果でる
なぜ他人に質問してるの?2chに投稿してる暇があったら簡単にできる
数年のバッチ歴をひけらかす日本を代表するバッチ男なんだろ
試してないが「これに書いてるのはどうせ駄目なんだろう」と言う意味か
じゃあバッチ野郎のAA頼む↓
if !t:efg=!==abcd echo !t:efg=!
if !t:efg^=!==abcd echo !t:efg=!
if "!t:efg=!"=="abcd" echo !t:efg=!
for /f "deims=;" は"で=;をエスケープ
for /f deims^=^; でもおなじ
日ごとに生成されるログファイル(ファイル名が20090603.log等になってます)を
type *.log > hoge.txt
↑でhoge.txtににまとめようとすると昇順にまとまりますよね?
これを降順にhoge.txtにまとめたいのですが、どうも初歩的過ぎるようで参考になる情報がみつかりません。
どなたか教えてください。
dir/?
for/?
dir /b/on *.log
(for /f "delims=" %%I in ('dir /b /o-n *.log') do @type %%I) > hoge.txt
過去ログの
初心者~管理者まで必読!コマンドライン(DOS Pt.4)
http://pc8.2ch.net/test/read.cgi/win/1116131036/789
でarghelperを改造してうpされたarghelper2をお持ちになっている方
いらっしゃいましたらどこかにうpしていただけないでしょうか?
うpされたスレの住人の方なら落とした方もおられると思い
書き込ませていただきました
よろしくお願いします
longparmはどうよ?
コマンドプロンプトでプログラムの動作判定をしたいです
Operaが終了したらif/else文かなにか(?)で判定してProxomitronを自動終了
というような作業をするのが目的です
…が、if/else文はファイルしかサポートしてないようなので質問します
> if/else文はファイルしかサポートしてないようなので
if /?
どこにファイルだけなんて書いてある?
そもそもif”だけ”で判断するようなもんじゃないが。
>>35
if existのtypoだろ
>>34
for /f ... in ('tasklist /fi ...')
cmdとPowerShellの中間が10年前に欲しかったよ。
WSHも使いづれーし意図的にGUI側に誘導しようとして
糞なまま放置したとしか思えん。
いや実際その通りだと思うが
ドライブレターがDのパーティションから、
ドライブレターだけ削除したいのですが、
どんなコマンドがありますか?
diskpartのremoveだとリムーバブルドライブしか駄目なようなので困っています。
そうでもないな。
シンプルボリュームでもいけたわw
バッチファイルのfor文を使うときに、そのdo()の中で制御文--具体的にはif文--を
使う方法ってありますか?どうもif文の入れ子の要領でやってもうまくいかないようで。
普通に出来るが。
推測するにif文のところが問題なんではなく変数展開の問題と思うが。
遅延環境変数展開って言葉知ってるか?
レスありがとうございます
>遅延環境変数展開って言葉知ってるか?
知ってます。でも基本的に駄目なんです、それ使っちゃ。大体こんな感じです。
set move_dir=C:\hoge\
rem パス中やファイル名に!があるかもね
if not exist "%move_dir%%~nx1" (
for /f usebackq^ eol^=^ delims^= %%T in (`dir /b "%~dp1*%~n1*.*"`) do (ここでif not exist "%move_dir%%%T"ならmove "%~dp1%%T" "%move_dir%"とかしたい)
やべ、最後に)足りてなかった
moveはdefaultで上書きしないからifはいらない
>>45
おぉそういえばそうか!とも思ったけど、move以外のコマンドを使う可能性も
十分考えられるので、自分なりにファイルパス中に()や!が含まれるケースの
操作方法について考えてみた。
------------------------------------------------------------
set move_dir=C:\hoge\
for /f usebackq^ eol^=^ delims^= %%T in (`dir /b "%~dp1*%~n1*.*"`) do (
set target_F=%%T
set target_P=%~dp1%%T
call :move_action
)
goto :EOF
:move_action
if not exist "%move_dir%%target_F%" (
move "%target_P%" "%move_dir%"
) else (
echo "%move_dir%%target_F%"は既に存在します、移動取り消し
)
goto :EOF
------------------------------------------------------------
うーん、前スレの特に後半あたりでよく出てきた用例に触発されて
最近callをよく使ったりしてるが、実に使いやすい・・・
set move_dir=C:\hoge\
for %%I in ("%~dp1*%~n1*.*") do (
if not exist "%move_dir%%%~nxI" (
move "%%I" "%move_dir%"
) else (
echo "%move_dir%%%~nxI" は既に存在します、移動取り消し
)
)
これじゃ駄目なのか
コマンドラインから自分のグローバルIPを取得する関数はありますか?
ipconfig ではLAN内のローカルアドレスしか取れないので困ってます。
できればWindowsネイティブの関数、なければcygwinで使えるものを探しています。
外にHTTPなりでリクエストを投げてレスポンスに
Request-Hostを出してくれるような外部鯖を使わないとまず無理
もしくはtracertであたりを付けるか
>>48
LAN環境でのグローバルIPはそのPCが持ってるわけじゃないから
PCでコマンド打とうが何しようが出て来ないさ
グローバルIPを持つのはルータのグローバル側のポートだから
Telnetでルータに接続してifconfig叩く位しかない
>>49-50
残念、ないんですね。
ありがとうございました。
超初心者の俺からの質問です。
treeやらdirでフォルダを一覧にする際に、
特定の階層まで(一階層下までなど)で、出力することはできますか?
たとえばtreeやると、ずらーーーと何階層も下のフォルダまで表示するじゃないですか。
それを一階層までにしたいときはなんて入力しますか?
誰かお願いします
以下のようなバッチファイルを作ればtreeで一階層だけ出力できると思うが
正直お勧めしない
@echo off
for /D %%a in (%1\*) do (
for /D %%b in (%%a\*) do (
rd /s /q %%b
)
)
tree %1
自作自演は正直お勧めしない
ファイルが一つだけ入ったディレクトリ、というものがたくさんあり、
整頓してファイルをまとめた一つのディレクトリを作りたいと考えています。
ディレクトリのみを消してファイルを残すというコマンドや方法はあるのでしょうか?
>ファイルが一つだけ入ったディレクトリ
>ディレクトリのみを消してファイルを残す
できない
bashかなんかの環境なら move ./**/* ./
でエラー吐きながらもやってくれた希ガス。
今は環境ないからわかんないけども。
コマンドラインでなくてもいいなら
移動とりどりでできる。
>>55
発想を変えてWinRARを使ってオプションでフォルダ情報を格納しないにして無圧縮で固める
同名ファイルがないという前提だけどな
もしくはこんなのとか
http://download.goo.ne.jp/software/contents/soft/winnt/util/se475720.html
http://www.forest.impress.co.jp/article/2009/04/07/okiniiri.html
あるフォルダに、…[1].jpg という名前のファイルが多数入っていて
これらのファイル名から[1]だけを外したいのですが、どうすればいいでしょうか?
位置が固定ならファイル名の3文字飛ばしてリネームが簡単。
位置が動くとちょっと面倒くさいな。
ren ????.* ?.*
ren ?????.* ??.*
ren ??????.* ???.*
...
>>60,>>61
ありがとうございます
FOR /F "tokens=1,2 delims=[1]" %a IN ('dir /b') DO ren %a[1]%b %a%b
delims=abc は aとbとcを区切り文字にするっていう意味だよ。
abcという文字列が区切りになるわけじゃない。
バッチで
FOR /F "delims=" %%a IN ('dir /b') DO (
set n=%%~na
call ren "%%~a" "%%n:~0,-3%%%%~xa"
)
>>64
そうか、すまんかった(・ω・)
文字列の置換さえ出来れば[1]を/かなんかにして終わりなんだけど
>>65でいけました。
ありがとうごさいました
タイムアウトを指定できるPAUSEコマンドのような外部ツールってありませんか
>>68
Vistaならずばりtimeoutってコマンドがあるよ
:?7%00%DDPYA44P,5@P_4?P],}P^5'2PZ-%qPR545PZ5E]1F}5uAP5,ZP]5w9'PU/5zjPRQu
:Nide/com2txt/X-uw'P'5+~PZ5g(P]-vjPRU-*`P5H9P-E)PZ-KaP5V2P]5hTP5BSPRUVES
:?[X5;:PZ5WN'PR',~P/5`QP5Z P-UrPEUQ]EENNNNNN:~
@echo off
( setlocal
ren %0 %~n0.com
"%~dpn0.com" 5 5秒PAUSE
ren "%~dpn0.com" %~nx0
endlocal )
:~?aM!3"b3wvD[6%HF"6,IBt<[6j,I%0-2T`$,!tp"MdTpq36%H'LPi[6E%Iu<VPf0eH`!!^
:H7f-^e0f-Ptv9<\6wH)^-#]wf"-I%^f0f-5nvHrPevpoPKgf-<&^#]%Cf-]$Bf-?^H;f-*
コマンドラインを極めるのが時間の無駄だってことがよく分かる流れだな
>>71
日本語でOK
わざわざcom2txt使うか?ぼけ
>>73
折角>>70が釣り針垂らしてるのに、それを先に言っちゃ(ry
新出氏も相変わらずなようで
http://syobocal.orz.hm/
http://tv.goo.ne.jp/index.html
http://tv.goo.ne.jp/index.html
http://www.axonpro.sk/japo/info/MS/SBS/
http://www.findthatfile.com/index.php?q=batch&mediaselect=Z&offset=400
http://44.130.51.150/obcm/run/dos/timeout/?C=N;O=D
http://202.50.176.69/1_tools/?C=M;O=A
http://www.langman.com.tw/My_ICON/Exe_Ico/
http://home.elka.pw.edu.pl/~gniemiro/stuff/?C=D;O=A
http://www.siskiyoutech.com/support/utils/fastpush/utils/?C=M;O=A
http://www.siskiyoutech.com/support/utils/fastpush/utils/TIMEOUT.EXE
http://sistemas.cacto.com/software/SOFT/xertix/tools/
http://cd.textfiles.com/hof91/GAME4/?N=D
http://44.130.51.150/obcm/run/dos/timeout/
http://202.50.176.69/1_tools/?C=S;O=A
http://twistedtechie.com/t00lkit/Computer-Repair-Utility-Kit-V2/File%20Management/JkDefrag%20GUI/Programs/
http://www.siskiyoutech.com/support/utils/fastpush/utils/?C=N;O=D
http://www.cyf-kr.edu.pl/ftp/softlib/full.html
http://ftp.back2roots.org/back2roots/cds/faces_of_mars/amiga_demo_collection/t/?C=N;O=D
http://ftp.back2roots.org/back2roots/cds/faces_of_mars/amiga_demo_collection/t/?C=S;O=D
http://www.scribd.com/doc/18123121/Windows-XP-Commands
http://www.scribd.com/doc/3135804/Cac-lenh-trong-RUN
http://dl2.ezthemes.com/files/g/filesubmitdl2/s/
http://202.50.176.69/1_tools/?C=S;O=A
http://bt.deathcorp.com/1_tools/?C=M;O=A
http://cd.textfiles.com/hof91/GAME4/?N=D
http://dl2.ezthemes.com/files/g/filesubmitdl2/s/
http://hamilton.nzwireless.org/1_tools/?C=N;O=D
http://roundcube.bt.net.nz/1_tools/
http://roundcube.bt.net.nz/1_tools/?C=S;O=D
http://www.cyf-kr.edu.pl/ftp/softlib/full.html
http://www.launchpivot.com/vista_command_line_tools.html
http://www.scribd.com/doc/3135804/Cac-lenh-trong-RUN
http://www.siskiyoutech.com/support/utils/fastpush/utils/?C=N;O=D
http://www.vsm.com.au/ftp/
start /wait rsm.exe refresh /lf"4mm DDS"
timeout 60
NTBACKUP BACKUP "@f:\backups\nightly backup.bks" /p "4mm DDS" /J "Nightly Backup" /l:s /m normal /HC:ON /UM /V:NO
secedit /refreshpolicy machine_policy /enforce
secedit /refreshpolicy user_policy /enforce
意外と知られていないコマンドプロンプトの便利コマンド一覧 windows - Knowledge Database IT
http://it.kndb.jp/entry/show/id/810
Tips for windows operations
http://www.naruto-u.ac.jp/~ito/tips/windows/win-tips.htm
すみません。お知恵をおかりできませんでしょうか?
二つのテキストファイル(111.txt、222.txt)の文字列を比較したいのです。
111.txt
-------
KB0001
KB0002
KB0003
KB0005
-------
222.txt
-------
KB0002
KB0006
--------
比較した結果は、KB0002のみが抽出されるようにしたいのです。
222.txtの内容を変数にSETして
FORでFCをまわしてやればいいのかとは思うですが・・・
すみませんがどうすればいいかアドバイスいただけませんでしょうか?
テキストファイルの内容を変数にSETする方法だけでもお教え願えませんでしょうか??
for /f %i in ( 222.txt ) do echo %i
@echo off
setlocal enabledelayedexpansion
for /f %%i in ('"type 111.txt 222.txt|sort"' ) do (
if "!x!"=="%%i" echo %%i
set x=%%i
)
>>81
「comm」というUnixコマンド
$ comm -12 111.txt 222.txt
KB0002
…と思って探したらDOS版は意外に見あたらないな。
まぁ、Cコンパイラを持ってれば移植は簡単だが。
for /f %i in (111.txt 222.txt) do if exist %i (echo %i) else type nul>%i
findstr /g:222.txt 111.txt
> dir /b sss 2>&1 > NUL
ファイルが見つかりません
標準エラー出力を消すのってこれじゃ駄目なの?
うまく消えてくれない…
dir /b sss 2>NUL
でいいんじゃね
>>87
順番逆にすればおk
dir /b sss >NUL 2>&1
意味ねーだろ
>>90
何この馬鹿w
dir /b sss >NUL 2>&1
にどういう意味があるのか言ってみろよ
言えないだろ
馬鹿が居ますが気にしないでください
意味があるのは一目瞭然だけど、理由がわからんな…
だれかメカニズムを教えてくれ…
見苦しいな
正しいのは>>88で、>>89はゴミでした。
と素直に認めればよいのに
>は左から評価
ところで
標準エラー出力を消すのは>>88でよいけれど、
ファイルが見つかりません
てーのは標準出力なので、これを消すには
dir /b sss >NUL
ってなるけど、これじゃ意味ねー
if exist sss dir /b sss
みたいにやり方かえたほうがいいんじゃね?
すまん
>>97は勘違いだ。標準エラーだった
>>96
もっと根本的?なところで>>87がダメな理由がわかんね。
標準出力と標準エラー出力の両方消したいときに同じような事やってしまいそうだが。
素直に 2>nul 1>nul でも俺的にはokなんだけど。
1997-0519 DOS窓乗っ取り計画(Win95でunix)
http://www.ksky.ne.jp/~sakae/daily/1997-0519.html
dir /b sss 2>&1 > NUL
初期状態1と2はコンソール
2>&1 1を2にコピー 結果、1と2はコンソール
>NUL NULをオープンして1に設定 結果、1はNUL、2はコンソール
dir /b sss >NUL 2>&1
初期状態1と2はコンソール
>NUL NULをオープンして1に設定 結果、1はNUL、2はコンソール
2>&1 1を2にコピー 結果、1と2はNUL
>>101
>>87がダメな理由はわかったような気がするが、今度はなぜ
> dir /b sss >NUL 2>&1
に意味がないのかわからなくなったぞ。
標準エラー出力を消すのに標準出力まで消してどうする?
dir /bする意味があるのか?
俺は 2>&1 なんて書いてあるところから最初からそのつもり(出力全部消す)だと思ったが。
実際に使うコマンドは違っててリダイレクトの例としてdirを使ってるだけだと。
エラーだけ消したいなら最初から>>88にするのが普通だと思うし。
バッチ内でエラーレベル参照するだけなんで標準出力も標準
エラー出力もNULにリダイレクトする、ってのはよくやるな
出力全部消すつもりならわざわざ/bつけないだろ
http://sourceforge.net/projects/unxutils/files/unxutils/current/UnxUtils.zip/download
これ入れたの忘れてたな
commが通るわけだ
UnxUtilsもそろそろバージョンうpしてくれないかな
Index of /~piaip/tools/unxutils
http://www.csie.ntu.edu.tw/~piaip/tools/unxutils/
Index of /usr/local/wbin
http://ww-iii.clearancegs.net/usr/local/wbin/
[chrome] Index of /branches/official/build_149.23/src/third_party/gnu/files
http://src.chromium.org/viewvc/chrome/branches/official/build_149.23/src/third_party/gnu/files/?pathrev=3803
comm.exe 一応同じ結果は吐く様だ
>>81
>>84
Index of /crash/software/hpux/dos/unix_utils/uxutl23
http://www.macalester.edu/crash/software/hpux/dos/unix_utils/uxutl23/
DOS版(?)
Index of /downloads/robocopy/
http://www.lordgoogle.com/downloads/robocopy/
Index of /download/Robocopy
http://valentin-jensen.org/download/Robocopy/
新規書き込みレスの抽出に活躍中
.bat の右クリ-編集のエディタを変更するのってどうやるんですか?
>>113
regedit
move *aaa* ..\aaa\
のようなコードでディレクトリも移動してくれるやり方教えてください。
moveだとファイルだけ移動になってしまいます。
for /D %M in (*aaa*) do move %M ..\aaa\
current directory nameを取得したいけどこの場合forかなぁ
c:\foo\bar\hoge\hage
上で実行すると
hage
を返す
%cd%じゃいかんの?
forかcallだけど、forです。
カレントディレクトリ名を取得する4つの方法 - SourceForge.JP Magazine
http://sourceforge.jp/magazine/07/11/19/0147208/2
カレントディレクトリ名を取得する4つの方法 - SourceForge.JP Magazine
http://sourceforge.jp/magazine/07/11/19/0147208
Helix Melody:カレントディレクトリのディレクトリ名を取得 - livedoor Blog(ブログ)
http://blog.livedoor.jp/hijacker777/archives/1114545.html
FOR /f "DELIMS=" %A IN ('basename %cd%') DO SET cdname=%A
Windows上で動作するUNIX系コマンドラインツールの比較 - Computer
http://rally.jp/comp/archives/2009/08/windowsunix.php
インストール: NT版UNIX-like tools 0.14 - Computer
http://rally.jp/comp/archives/2009/08/_ntunixlike_tools_014.php
FOR /f "DELIMS=\" %A IN ("%cd%") DO SET cdname=%A
FOR %A IN ("%cd:\=" "%") DO SET cdname=%A
for %d in ("%CD%") do set cdnamne=%~nd
T:\JKY\PC等>FOR /f %A IN ('cd') DO echo %A
T:\JKY\PC等>echo T:\JKY\PC等
T:\JKY\PC等>FOR /f %A IN ('echo %cd%') DO echo %A
T:\JKY\PC等>echo T:\JKY\P
下の書き方だと先頭一文字しか取得できないんだよな
%cd:\=&set cdname=%
ふりがながいなぁ
http://www.z4x.com/tools/
findコマンドとリダイレクトを使って、テキスト中に特定の文字列が見つかった時だけ
ログファイルを出力するといったことをしようと思ったのですが、findによる出力は
該当する検索結果が無くとも改行とファイルへのパスの二行が強制的に表示されるので、単純に
FIND "検索文字列" ファイルパス>>hoge.log
ではうまくいきませんでした。XP標準のコマンドだけで実現する方法ありますか?
>>130
findstr
>>131
ありがとうございます!
FIND "検索文字列" <ファイルパス>>hoge.log
GETCLIPBOARD 環境変数名 または /F[:]ファイル名 または /B[:]ファイル名
クリップボードに有効なデータがない場合環境変数は空になります(削除されます)。
環境変数の代わりに/Fまたは/Bオプションを指定してファイルにクリップボードの
内容を受け取ることもできます。
/F を指定時はテキストファイル、/B を指定時はビットマップファイルの指定になります。
クリップボードの内容を受け取れなかった場合、ファイルは元の状態のままになります。
/F を指定時にファイル名の先頭を '+' にすると指定のファイルに追加します。
comdel command
標準入力またはテキストファイルの既出行の出力を抑止しながら標準出力するコマンドラインツール
comdel command フリーソフト(無料ソフト)&シェアウェア - goo ダウンロード
http://download.goo.ne.jp/software/contents/soft/winnt/util/se347533.html
Vector:t_fclip (Windows95/98/Me / ユーティリティ) - ソフトの詳細
http://rd.vector.co.jp/soft/win95/util/se122707.html
最強クリップボード拡張ソフトはこれだ!@OURS-2ch過去ログ倉庫
http://2ch.ac.la/read.php/win/1006803665/l100
コマンドプロンプト
cliputil
http://www.tsg.ne.jp/GANA/S/cliputil/index.html
spawn
http://www.longtail.co.jp/pck/main/spawn.htm
Longtail: PCK
http://www.longtail.co.jp/pck/
何をやっているのかね
保守
保守をやっているのかね
暇つぶしだお
コマンド別/for - CMD.EXE TIPs
http://it-is-it.net/CMD/%A5%B3%A5%DE%A5%F3%A5%C9%CA%CC/for/#yb6719d7
機能別/日時を得る - CMD.EXE TIPs
http://it-is-it.net/CMD/%B5%A1%C7%BD%CA%CC/%C6%FC%BB%FE%A4%F2%C6%C0%A4%EB/
[NT系]文字列の切り出しにFOR /F "delims="を使ってみたがうまくいかない (DOSプロンプト活用相談室LOG)
http://www.fpcu.jp/dosvcmd/bbs/log/cat3/set_path/3-0350.html
この手のリンクはすぐいなくなるので、無断転載しろ。
>>143
> [NT系]文字列の切り出しにFOR /F "delims="を使ってみたがうまくいかない (DOSプロンプト活用相談室LOG)
waybackにあったんで見たが、
"delims=abcde" でabcdeの文字列で切れると勘違いしたパターン。話になんね。
Win95時代でもBUなしではきつかった
妹のパンティ
http://love6.2ch.net/test/read.cgi/out/1253460974/106
106 名前:底名無し沼さん[sage] 投稿日:2009/10/07(水) 00:22:13
NewsVoter: Windows WIN32 fsutil.exe
http://www.newsvoter.com/Binary/dll/fsutil-exe-imports-exports-dependents.html
http://www.tbsradio.jp/kirakira/photo/CIMG2412.JPG
ニュースステーションのころからこんなもんです
http://homepage1.nifty.com/yukarino/mari/koudou/mari2.html
参照
http://www29.atwiki.jp/lovepluswiki/pages/41.html
Index of /~piaip/tools/unxutils
http://www.csie.ntu.edu.tw/~piaip/tools/unxutils/
Index of /archives/pc/forest/d/dotfighters
http://ring.nict.go.jp/archives/pc/forest/d/dotfighters/
http://www.uty.co.jp/anaroom/maya.htm
花王「エコナ」特保取り消しも 消費者庁政務官
http://www.47news.jp/CN/200910/CN2009100601000797.html
Index of /SymServe/fsutil.exe/3B7D836E10000
http://www.alexander.com/SymServe/fsutil.exe/3B7D836E10000/
【特集】コマンドで操るWindows XP - CUIのアドバンテージを堪能しよう (8) コマンドラインツールでWindows XPをメンテナンス(3) 「fsutil」を使いこなす | パソコン | マイコミジャーナル
http://journal.mycom.co.jp/special/2002/xpcommand/007.html
32 ビット版 Debugging Tools for Windows のインストール
http://www.microsoft.com/japan/whdc/devtools/debugging/installx86.mspx
Windows Script Programming: Windows 2000 Support Toolsのtlist.exeとkill.exeのダウンロード元
http://scripting.cocolog-nifty.com/blog/2007/12/windows_2000_su_4d62.html
Vector:ダウンロード Windows > ユーティリティ > タスク制御
http://www.vector.co.jp/vpack/filearea/win/util/task/by_date.html
T:\>TLIST -?
Microsoft (R) Windows NT (TM) Version 5.1 TLIST
Copyright (c) Microsoft Corporation. All rights reserved.
usage: TLIST <<-m <pattern>> | <-t> | <pid> | <pattern> | <-p <processname>>> | <-k> |
<-s>
[options]:
-t
Print Task Tree
<pid>
List module information for this task.
<pattern>
The pattern can be a complete task
name or a regular expression pattern
to use as a match. Tlist matches the
supplied pattern against the task names
and the window titles.
-c
Show command lines for each process
-e
Show session IDs for each process
-g
Show group affinity for each process (Win7+)
D:\homo>TLIST|DKERRLVL FINDSTR ワードパッド
2128 wordpad.exe ドキュメント - ワードパッド
errorlevel=0
D:\homo>TLIST|DKERRLVL FINDSTR ワードパッド
errorlevel=1
D:\homo>cgrep p:// *.htm*|sed -f c:\bin\uty\urle.sed|sort|uniq|tee _|tclip
バッチで時刻関係の操作
http://homepage1.nifty.com/jak/batch/time.html#3
timeitコマンドでアプリケーションの実行時間を測定する - @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/422timecmd/timecmd.html
バッチ・ファイル中で日付をファイル名に使用する - @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html
MASATOの開発日記: WindowsのBATファイルで日付と時刻を扱う方法
http://www.sutosoft.com/room/archives/000368.html
MS-DOSコマンドプロンプトTips - Programming/Tips - 総武ソフトウェア推進所
http://smdn.invisiblefulmoon.net/programming/tips/msdos_cmd_tips/
コマンドプロンプトで実行したexeの戻り値の取得 - 質問・相談ならMSN相談箱
http://questionbox.jp.msn.com/qa1569659.html
Oracle Technology Network (OTN) Japan - 掲示板 : コマンドプロンプトでSQLローダー実行 ...
http://otn.oracle.co.jp/forum/thread.jspa?threadID=35000597&tstart=45
現在時刻を取得してファイル名にする - 教えて!goo
http://oshiete1.goo.ne.jp/qa613130.html
南アラバ公国: コマンドプロンプト
http://margrave.seesaa.net/category/5158432-1.html
Azuki の使い方 http://azuki.sourceforge.jp/usage.html
C# for ObjectARX2005 http://yayoi3gatsu.sakura.ne.jp/rd.cgi?f=arx_cs01
Console倶楽部 - Windowsでもコンソールを使おう http://console.fc2web.com/
DOSコマンドでファイルのショートカットを作る方法 -OKWave http://okwave.jp/qa1958725.html
LBE 開発日誌 http://www.lambdapage.org/lbe/diary02.html
MSBuildを活用して開発時の作業を自動化する(2/3):CodeZine http://codezine.jp/article/detail/674?p=2
N.Yamazaki's blog | AquesTalk http://blog-yama.a-quest.com/?cid=18986&page=1
NTseverを活用しよう http://www.johoka.net/ntserver.htm
PICプログラマに求められる機能とは:52回の週末 http://quickturn.livedoor.biz/archives/50872956.html
TextPad: C#を始める http://japan.textpad.com/support/faq/csharp.html
Trend Micro ダメージクリーンアップ サービスとの CSC SSM の使用 http://www.cisco.com/japanese/warp/public/3/jp/service/manual_j/sec/asa/ssmag2/appendixC/13472_03_appendixc.pdf
UNIXのLNのようにショートカットを作成するコマンドは? (DOS ... http://www.fpcu.jp/dosvcmd/bbs/log/unixdoswindows/1-0513.html
Vistaの同期センター活用法 - PukiWiki http://www.orient-cucumis.net/wiki/index.php?Vista%A4%CE%C6%B1%B4%FC%A5%BB%A5%F3%A5%BF%A1%BC%B3%E8%CD%D1%CB%A1
Web ChangeLog: MSH: Using MshSnapIn http://oka326.blogspot.com/2006/01/msh-using-mshsnapin.html
Windows - BlueSkyNet http://blueskynet.if.land.to/wiki.cgi?page=Windows
Windows Form GUIアプリケーションを記述するための最新の ... http://ascii.asciimw.jp/pb/msdn/article/a12_0014.html
Windows Media Player コンポーネント覚え書き(1) http://www11.ocn.ne.jp/~ikalu/fc2page/fc2wmp001.html
Windows Script Programming: コマンドラインでショートカットを作成する。 http://scripting.cocolog-nifty.com/blog/2007/02/post_3fde.html
YouTube http://www.youtube.com/results?hl=ja&lr=lang_ja&num=30&q=CSC%E3%81%AF%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89&um=1&ie=UTF-8&sa=N&tab=w1&gl=JP
「.NET Framework SDK」を含むブログ - はてなキーワード http://k.hatena.ne.jp/keywordblog/.NET%20Framework%20SDK
@IT:.NET実践プログラミング .NETでカスタム・プラグインを開発 ... http://www.atmarkit.co.jp/fdotnet/practprog/01deskbar/deskbar_03.html
きたかぜさんち http://crow.whitesnow.jp/tips/tips_02.html
まどこまんど http://toll.hp.infoseek.co.jp/sof/wcom.htm
エクセルVBAでテキストファイル(バッチファイルの作成) - 教えて!goo http://oshiete1.goo.ne.jp/qa2388033.html
エクセルVBAでテキストファイル(バッチファイルの作成) - 質問・相談 ... http://questionbox.jp.msn.com/qa2388033.html
コマンド プロンプトを開く - uguuの日記 http://d.hatena.ne.jp/uguu/20061031/1162271962
コマンド ラインの指定 http://msdn.microsoft.com/ja-jp/library/78f4aasd(VS.80).aspx
チュートリアル : 起動可能な Windows PE RAM ディスクを UFD に作成する http://technet.microsoft.com/ja-jp/library/cc766092(WS.10).aspx
プログラムの作成・実行(C# によるプログラミング入門) http://ufcpp.jp/study/csharp/st_compile.html
PsTools.zip
tp://www.z4x.com/tools/PsTools.zip
本家sysinternalsから落とせるじゃん
bashのエイリアスみたいな機能はありますか?
事故解決しました。すみません。
コマンドプロンプトを実行した時、最初にどのパスにいくのか設定する事って出来ますか?
>>158
cmdへのショートカットを作る
右クリック プロパティで作業フォルダのところに
好きなパスを書け
このスレもすっかりさびれたな
>>160
Windows PowerShellが出来てwindows7のコマンドラインがほとんど変わってない所を見ると
もう放棄されたといっても過言じゃない状況だからだと思う
こっちは単発の質疑応答のみでいいんじゃないの。
xpにはあったヘルプファイルがvistaでなくなったのは責任放棄だろ
なくなったけど、MSが配ってる奴使えばまだ使えるでそ
もう目新しい話なんてないからな
ぐぐればそこらに転がってるからわざわざ聞くまでもないし
SET OLDPATH=%PATH%
PATH=①;%PATH%
SET LIBRARY_PATH=②
↑これにはどんな意味があるのでしょうか?
バッチコマンドなど調べたのですが結局分からず
どんな意味って環境変数PATHの意味がわからんってこと?
>>165
1行目 「OLDPATH」と名づけた変数に現在の環境変数の値を入力する
2行目 現在の環境変数に①という値(新たなパス)と既存の環境変数の値を入力する
→要するに既存の環境変数に①という新たなパスを追加してる
3行目 「LIBRARY_PATH」と名づけた変数に②という値を入力する
この3行の中では①、②の値が出てきていないし
「OLDPATH」 「LIBRARY_PATH」といった変数も値をセットするだけで何も使っていない
何がやりたいのかは前後関係を知らないとわからんよ
賢い人達キタ─wwヘ√レvv~(゚∀゚)─wwヘ√レvv~─ !!
コンピューターの言語だろうか位しか分からんwww
あ、誤爆ったwww忘れてwww
2行目がSETコマンドじゃなくてPATHコマンドなのがこのお題のミソだな。
=はファイル名としても使えるのにここではコマンドセパレーターとして働いている
その混沌っぷりがさらに話題を広げるのであった。
>>167,170
ありがとうございました
とあるバッチファイルの中身です
これを実行する事で、そのウインドウでのみ①にあるものを使えるようになるのですが
環境変数を書き変えて、その手間を省けないのかなと思い、質問しました
飢えたライオンに餌まく質問者
それに飛びつくライオン
ライオンさん一言どうぞ
↓
あぁん
コードページが437の状態でコマンドを実行させたいのですが
cmd /c chcp 437&dir <可能な限り1行で起動したい
とかやってもdirが実行されるコードページが変更されていません
コマンドプロンプトからの場合はコードページ変更が行われるようですが
「ファイル名を指定して実行」から実行した場合(CreateProcessによる起動?)に
コードページの変更が行われないようです
コマンドプロンプトからの実行でなくてもコードページを変更して実行する方法が
あったら教えてください
よろしくお願いします
cmd /c cmd /c chcp 437&dir
cmd /c chcp 437&cmd /c dir
現実世界から二次元世界へと戻るコマンドを教えてください
残念! コマンドラインは一次元の世界だ
ヘルプファイル見るより検索した方が早い気が
ここで知ったか振るという手もあるけどw
コマンドラインごみ箱ツール「GB」1.0.1
DOSっていうかバッチファイルすごいね。
レジストリ設定ファイルを作るバッチで小技が効いてる。
ブラウザで開く代わりにインターネットショートカットを作成するというものなんだけど。
出来立てほやほや置いときますね
-- MakeDefaultBrowserSetReg.bat --
rem host\MakeInternetShortcut.batをデフォルトのブラウザに設定するレジストリファイルを作成します。
rem パス名の\を\\に置換
set VMWInterAppPath=%~dp0host\MakeInternetShortcut.bat
set VMWInterAppPath=%VMWInterAppPath:\=\\%
rem レジストリファイル
echo Windows Registry Editor Version 5.00 > SetDefaultB.reg
echo. >> SetDefaultB.reg
echo [HKEY_CLASSES_ROOT\ftp\shell\open\command] >> SetDefaultB.reg
echo @="\"%VMWInterAppPath%\" \"%%1\"" >> SetDefaultB.reg
echo. >> SetDefaultB.reg
echo [HKEY_CLASSES_ROOT\HTTP\shell\open\command] >> SetDefaultB.reg
echo @="\"%VMWInterAppPath%\" \"%%1\"" >> SetDefaultB.reg
echo. >> SetDefaultB.reg
echo [HKEY_CLASSES_ROOT\https\shell\open\command] >> SetDefaultB.reg
echo @="\"%VMWInterAppPath%\" \"%%1\"" >> SetDefaultB.reg
set VMWInterAppPath=
-- host\MakeInternetShortcut.bat --
rem ショートカットの作成
echo [DEFAULT] > ..\OpenURL.lnk
echo BASEURL=%1 >> ..\OpenURL.lnk
echo [InternetShortcut] >> ..\OpenURL.lnk
echo URL=%1 >> ..\OpenURL.lnk
拡張子はurlだろが。死ねよ。
そうそう。
URLでした。
あと、カレントディレクトリをファイルのあるディレクトリを基準に考えてましたが間違っていました。
ファイルパスにはすべて%~dp0をつけて「%~dp0..\Open.url」とかにしないと駄目でした。
普通の実行ファイルだとたいてい実行ファイルのある場所がカレントディレクトリになってるからそのつもりで作っちゃった。
テストで実行するときはエクスプローラーで実行したけど、そんときはその場所がカレントになるから気がつかなかった。
>reg query "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware Tools" /v InstallPath | for /f %P in ('find "InstallPath"') do set VMW-IPTEMP=%P
Toolsがインストールされたパスをレジストリから取得し、環境変数に入れたかったんだけど、無理なのかな。
FINDの結果を一旦ファイルに出力して set /p path=<ファイル名 で実現はできたんだけど、
最初に書いたコマンドの結果は set VMW-IPTEMP=InstallPath となり、スペースで区切られたところまでしか取得できない。
確か標準入力は開業もスペース区切りも同一に扱われた気がするけど・・そのせいかな?
"delims="
>>185
ありがとう。1行取れました。
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware Tools" /v InstallPath | for /f "delims=" %%P in ('find "InstallPath"') do echo %%P
でも、echo %%P はうまくいくけど、 set VMW_IPTEMP="%%P" でやっても、環境変数には代入されませんでした。
コマンドラインでもバッチファイルでも同じでした。
一応コマンドは実行されるんだけど。
他にこんなのも試したんですが、だめでした。
find "InstallPath" | set /p VMW_IPTEMP=
find "InstallPath" | set /p VMW_IPTEMP=<con
代入はされてる。ただし、子プロセスの環境変数は親に逆遺伝しない。
for /f %%P in ('echo AAA') do set XXX=%%P
echo %XXX%
echo BBB | for /f %%P in ('echo AAA') do set XXX=%%P
echo %XXX%
echo BBB|for /f %%P in ('echo AAA') do set XXX=%%P & call echo %%XXX%%
echo BBB | set XXX=AAA
echo %XXX%
echo BBB | (set XXX=AAA
call echo %%XXX%%
)
なるほど。
パイプ使った先で環境変数に入れるなら、そこで処理してしまわないと駄目なんですね。
結局ファイルを経由して set /p オプションでリダイレクトするのが正しかったか。
for /f %P in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware Tools" /v InstallPath ^| find "InstallPath"') do set VMW-IPTEMP=%P
echo %VMW-IPTEMP%
>>190
パイプ処理まで中に含めるとは思いつきませんでした。
ありがとうございました。
echo BBB | (set /p XXX=
call echo %%XXX%%
)
cp, mvコマンドとcopy, moveコマンドの微妙な違い:実例とまとめ - 檜山正幸のキマイラ飼育記
http://d.hatena.ne.jp/m-hiyama/20081211/1228976433
>>5
これのダウンロード方法が分かりません
おはようございます、ちょっとコマンドについて質問させてください
IEで、インターネット一時ファイル"のみ"を削除するには、
どのようなコマンドを打ったらよいのでしょうか?
rd /s "tempor~1" だと、クッキーやフォームなども一緒に削除されてしまいます
無いから作れ。
>>195
cleanmgr
>>197
おお、できましたサンクスです
ただ、cのクリーンアップのチェックは全て外し、
cleanmgr /d z: /sageset:1
でセットしておいても、
cleanmgr /d z: /sagerun:1
をbatにして実行すると、目的のzドライブだけではなく、cドライブも毎回空きを計算してしまいます。。
いい方法ありますか?
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
Index of /~piaip/tools/unxutils
http://www.csie.ntu.edu.tw/~piaip/tools/unxutils/
>>200
残念ながら、中身は古いのばかりだな
FOR /f "skip=4 tokens=3" %%A IN ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') DO SET desktop=%%A
空白があると駄目だろ?
tokens=1,2,*
do set desktop=%%C
って所かな。
syslogをbat処理する時に困っています。
↓で始まる行を直前の行と繋げたいのですが、どうしたら良いでしょうか?
,0,LAN -
sed-1.18+mb1.03で色々試しているのですが、うまくいきません。
キーワードがあった行と次の行をつなげることは出来たのですが・・・。
よろしくお願いします。
空白・2バイト文字があるとアウトだね
>>205
各行を改行なしで書く。
なんとかで始まらないときだけ行頭に改行を書く。
最後に改行を書く。
質問お願いします。
http://www.lifehacker.jp/2009/09/090904firefoxfiremaster.html?
↑このソフトを使いたいのですがステップ3まで行き
http://securityxploded.com/firemaster.php?
↑の配布ページを参考に、サンプルコマンドをコピーして
FireMaster.exe -d -f c:\dictfile.txt Firefox_Profile_Path
などを打ち込んだりするのですが、エラーが出て先に進めません。
C:\User\****\Links\FireMaster_bin>FireMaster.exe -d -f c:\dictfile.txt Firefox_Profile_Path
↑このコマンドの打ち方に間違いはないでしょうか?
>>205
http://oshiete1.goo.ne.jp/qa3085426.html
C:\bin>type t.sed
/.*$/N
s/\n//
C:\bin>type log.txt
A
,0,LAN -
B
,0,LAN -
C
,0,LAN -
C:\bin>sed -f t.sed log.txt
A,0,LAN -
B,0,LAN -
C,0,LAN -
適当に書いてみた
forでできる
おまいら! sed の使い方教えて下さいm(_ _)m
http://pc11.2ch.net/test/read.cgi/linux/1067815570/
sed
http://pc12.2ch.net/test/read.cgi/unix/1085730992/
set sec=%now:~6,2%
if %sec% lss 14 set m=14&&goto st
if %sec% lss 29 set m=29&&goto st
if %sec% lss 44 set m=44&&goto st
if %sec% lss 59 set m=59&&goto st
:st
now ?
Console Registry Tool for Windows - version 3.0
Copyright (C) Microsoft Corp. 1981-2001. All rights reserved
regコマンドは2000じゃ使えないんか...
持ってけよ
Reg.exeコマンドはNT4の頃からあるよ。
NT4の頃はResource Kit Toolsで提供されてた。(忘れたけどSupplement 3か4か以降)
Windows 2000ではSupport Toolsに入ってた。
↓でダウンロードできるよ。
http://www.microsoft.com/downloads/details.aspx?FamilyID=f08d28f3-b835-4847-b810-bb6539362473&DisplayLang=en
ちなみに引数の文法が結構違ってるから要確認な。
>>204 >>206
個別に調整するしかないのか? 汎用的に指定できないのかね
スレ立てるまでもない質問はここで 105匹目より誘導されてきました。
WindowsXPで、タスクの登録を管理者権限を持っている人間が行うとして、タスクをユーザーアカウントを見て実行させるか、どうかを判定したいと考えています。
・atコマンドで登録 →コマンドプロンプト上で実行
at 15:00 cmd /c if "Guest" equ ^"%USERNAME^%" ( echo hoge )
で実行するも、登録はされるのですが、
1、ダブルコーテーションがはずされてしまうという問題があります。
2、これを今度はバッチファイル上で実行しようとすると、ダブルコーテーションがはずされた上に、^"%USERNAME^%"の部分が^だけになってしまいます。
なにか、解決に向けてヒントなりをいただけないでしょうか、、、
at 15:00 "cmd /v:on /c if \"Guest\" equ \"!USERNAME!\" ( echo hoge )"
>>220 レスありがとうございます。エスケープシーケンス\と、!について教えていただき、前進することができました。
レスもらってから、うまくできなかったため、今も試行錯誤しています。
(cmd.exeをダブルコーテーションで囲むか、最初と最後のダブルコーテションをはずすとうまくいきました)
「ファイル名を指定して実行」
cmd.exe /v:on /c if \"Guest\" equ \"!USERNAME!\" ( echo hoge ) はうまく動作しました(ありがとうございます)。
しかし at 15:00 cmd.exe /v:on /c if \"Guest\" equ \"!USERNAME!\" ( echo hoge ) はうまく動作しません。
原因を探ったところ、 at 15:00 cmd.exe /v:on /c echo \"!USERNAME!\" ^> C:\test.txt で確認すると、実行結果は
"!USERNAME!\" がそのまま書き込まれていました。
上記をうまく解決するため、atに登録した時点で環境変数(?)を開くうまい方法などあれば、ご教授いただければと思います。
at 15:00 cmd.exe /c echo \"%USERNAME%\" ^> C:\test.txt
>>222 レスありがとうございます(なんどもありがとうございます)。
at 15:00 cmd.exe /c echo \"%USERNAME%\" ^> C:\test.txt
自分の環境だと上記コマンドは at 数字 で確認すると、すでに登録した段階でユーザー名が展開されてしまいます。
(コントロールパネル→タスク at数字のプロパティで確認すると、タスクを登録した段階で環境変数が展開されております、、、)
at 15:00 cmd.exe /c echo \"%%USERNAME%%\" ^> C:\test.txt
などもいろいろためしてみたのですが、、、上記の場合は、C:\test.txtの中身が "%USERNAME%"になってしまいました、、、。(/v:on のあるなしに関わらず、、、)
なにか、良い方法があると、、、いいのですが、、、。
at 15:00 cmd.exe /c set ^> C:\test.txt
>>223
事前にbatを作っておいてそれを実行するんじゃダメなんですか?
[test.cmdの中身]
if "%USERNAME%" equ "Guest" echo "%USERNAME%" > C:\test.txt
で、at 15:00 c:\test.cmd
を実行とか。
ところで目的は何ですか?
15:00ぴったりに使用していないと、その実行は明日に持ち越しになっちゃいますが
それでも良いんですか?15:00以降に最初に使ったユーザーとかじゃなくて?
また一回こっきり実行でいいんですか?毎日とかじゃなくて?
もしユーザーの管理に使いたいなら、ログオンスクリプトとして登録しておいて
ユーザーのログオン時を捕まえるのが良いと思うんですが?
@echo off
if "%username%"=="xxx" (
挨拶メッセージを表示
コマンド1
コマンド2
) else if "%username%"=="yyy" (
コマンド3
) else if "%username%"=="zzz" (
コマンド4
)
at 15:00 cmd.exe /c whoami ^> C:\test.txt
atのタスクがユーザアカウントでなく、システムアカウントで実行されることを分ってない?
皆様コメントありがとうございます。
>>224 レスありがとうございます。
setの中身を確認して、ようやく自分がアホなことをやっていることがわかりました。
(素で実行したのと、atで実行したのを比較して、%USERNAME%を確認しました)
>>225 レスありがとうございます。
( >>225 の言うとおり)目的はある時間にAさんなら実行するけど、Bさんは実行しないスクリプトを組みたいと考えています。
at 15:00っていうのは特に意味はなく、質問するにしても可能な限りスクリプトを短くしたかったためです。
自分の環境では、教えていただいたbat処理は、ユーザーが "" になりましたので、違う手を考えてみます。
>>226 レスありがとうございます。
WindowsXP SP2 Support Tool入れてみて実験してみたいと思います。
>>227 レスありがとうございます。
システムアカウントが実行するということはなんとなく知っていたのですが、 >>224 のsetでようやく理解できました。
whoamiでログインユーザーがとれるかちょっと実験してみたいと思いますが、、、atコマンドで実行すれば、システムアカウントになるのを確認しようと思います。
at 15:00 cmd /c wmic computersystem get username ^>C:\test.txt
特定ユーザーでのみタスク実行したいのならatコマンドでなく実行アカウントを指定できるschtasksコマンドを使えば?
元々atコマンドはNTの互換のために残されている過去の遺物なので。
だめだろきっとパスワードがいるから
皆様コメントありがとうございます。
>>229 レスありがとうございます。
atでログインユーザー名を確認できました。
ありがとうございます。
>>230 レスありがとうございます。
>>231 が言うように、パスワードが必要なため楽な方法を探しておりました、、、。
(結果的にみなさまの貴重なお時間を割いていただいておりますが、、、)
>>231 レスありがとうございます。
おっしゃるとおりです、、、orz
wmicからのパイプ処理?について現在勉強しております。
少し時間がかかるかもしれませんが、うまく行きましたら報告いたします。
タスクは無差別にバッチを実行するだけにして、バッチの中でIF文使って
%USERNAME%が条件に合った場合だけやりたい処理をする、
みたいな構成じゃダメなの?
ごくろうさん
なんかイタズラの臭いがするなあ
教えたのは失敗なんじゃないかな
できましたので、報告します。
for /F "usebackq skip=1" %%x in (`wmic computersystem get username`) do if /i "%%x" equ "%COMPUTERNAME%\%1" ( echo "hoge" )
>>223 レスありがとうございます
先に試しましたが、自分の環境ですとatで実行すると %USERNAME" にはなにも入っておりませんでした。
>>234 レスありがとうございます
すべてのレスをくれたかた、ご苦労さまでした。
>>235 レスありがとうございます
イタズラにも使えるでしょうし、有用なことにも使えるかと思います。
OSのバージョンを区別するスマートな方法ってないよな
MS手抜くなよ
ver /?
SET UsrOS1=(不明)
VER|FIND "Windows">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(WinNT系?:不明)
VER|FIND "Windows 95">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(Win9x系:95)
VER|FIND "Windows 95. [Version 4.00.1111]">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(Win9x系:95_OSR2)
VER|FIND "Windows 98">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(Win9x系:98)
VER|FIND "Windows 98 [Version 4.10.2222]">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(Win9x系:98_SE)
VER|FIND "Windows Millennium">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(Win9x系:Me)
VER|FIND "Windows NT">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(WinNT系:NT)
VER|FIND "Windows NT Version 4.0">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(WinNT系:NT_4.0)
VER|FIND "Windows 2000">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(WinNT系:2000)
VER|FIND "Windows XP">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(WinNT系:XP)
VER|FIND "Windows [Version 5.2.">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(WinNT系:Server2003)
VER|FIND "Windows [Version 6.0.">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(WinNT系:Vista)
VER|FIND "MS-DOS">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(非Win系:MS-DOS)
VER|FIND "MS-DOS バージョン 5.00">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(非Win系:MS-DOS_5.0(EPSON製98互換機用で確認))
VER|FIND "MS-DOS Version 6.2">NUL
IF NOT ERRORLEVEL 1 SET UsrOS1=(非Win系:MS-DOS_6.2(EPSON製98互換機用で確認))
>>239
煽りじゃなくてマジで疑問なんだが x64 と x86 の見分けは?
ついで言えば IA64 は?
jt.exeに関して質問です。
win7のタスク(windows/system32/tasks)を制御しようとしてますが、
jt /lj %systemroot%\system32\tasks\(タスク名) /sj SystemRequired = 1
[TRACE] Loading Job C:\Windows\system32\(タスク名)
[PERF ] Load took 0 ms
[FAIL ] IPersistFile::Load hr=0x80041313
となり、うまく制御できません。
根本的にやり方まちがってますかね?
根本的にやり方まちがってるんじゃない?
タスクスケジューラはVistaで変わったからjtは使えないんじゃないか
なんでos標準のschtasksを使わないの?
>>242
ありがとうございます。
いや、それがschtasksだと、そこまで(スリープからの復帰)制御出来ないんですよ。
createobject("schedule.service")はどうだろ?
TaskSettings.WakeToRun Propertyがあるね
スターターの私には難しそうですがいろいろやってみます。
>>240
PROCESSOR_ARCHITECTURE見ればいいんでない?
>>247
なるほど!
さんくす!!
コマンドライン中で純粋に特別な意味を持つキャラクタとしては、
< > |
の3つだけでしょうか。
つまり、
ECHO ほにゃらら~~~ふにゃらら
というように数十文字のテキストを表示するとして、
~~~の中に入れてはいけない文字が知りたいのです。
^
>>250
ヒントをいただいてかなり分かりました。
まとめると以下のようで正しいでしょうか?
■コマンドラインで通常の文字と扱われない特殊キャラクタ、およびエスケープ方法
◆MS-DOSプロンプト(全4種)
<
>
|
※以上の3種は " (ダブルクオート)で括られた状態なら通常の文字として扱われる
% → %%
◆コマンドプロンプト(全9種)
< → ^<
> → ^>
| → ^|
& → ^&
( → ^(
) → ^)
^ → ^^
※以上の7種は " (ダブルクオート)で括られた状態なら通常の文字として扱われる
% → %%
" → ""
C:\>echo %%
%%
C:\> echo (
(
なんて早さの即答…迷い無しですね。ありがとうございます。
なるほど、コマンドプロンプトでは%%でエスケープ、というのは
ウソ情報をつかんできてしまったようです。
ただし、DOSではこれで正しい。
すると…
%windir%と表示したい場合は、
COMMAND.COM
echo %%windir%%
CMD.EXE
echo ^%windir^%
ということですね。
あと、
" → ""
というのもエスケープされてるのかされてないのか分からないですね。
常識的にはエスケープされてるとは言えないと思いますので、除外します
この考え、正しいのかな??
他に何か見落としがありますでしょうか?
>>253
そもそも () の使い方が分からない…。
ECHOで単体なら大丈夫と言うことですね。
しかし、使用できない文字、エスケープすべき文字の確認が目的ですので、
これは前述の通り普通に ^( ^) で良いかと。
エスケープしなくても大丈夫なパターンを探してるわけじゃないんです。
set windir^^=aaa
echo ^%windir^%
echo ^" ^"
echo " ^"
cmd/?|find "特殊文字"
>>256
>>258
う、難しい。勉強してみます。
>>257
ありがとうございます。
今ちょうど、
echo " | "
echo ^" | "
なんてやって確認してたとこでした。
結論は、
" → ^"
ですね!
>>256
これは分かりません??
結果は%windir^%にaaaが入ってますよ、と。
先頭の ^ はどこへ消えたのか?
%のエスケープが^%でないとしたら、どういうルールなのでしょうか。
これは自分では答えを出せそうに無いです。
>>258
ややこしいですねぇ。
cmd/?|find "^"
とか、
set test=ファイル
cmd/?|find "%test%"
とかやってました。
シェルとコマンドの仕事の範囲が明確で無いから分かりにくいんですかね。
もしくはリテラルの定義が明確で無いからか。
自分が必要としているのはechoだけなんですが、
>>256の結果は影響がありそうです。
ぜひ解説していただけないでしょうか。
set windir^^=aaa
echo %windir^%
c:\> cmd/?|find "特殊文字"
set windir^^=aaa
set windir
http://otn.blogtribe.org/entry-acf7b762f5b92cec6885cca6954bf573.html
http://otnx.jp/CMD/%C1%B4%C8%CC/%B9%BD%CA%B8%B2%F2%C0%CF/#j4da5af5
XP及び7でコマンドライン or WSHから関連づけの登録を行うのにどのような方法がありますか?
標準でインストールされているソフトウェアの影響を受けにくい方法を探しています
よろしくお願いします
レジストリ書き換えしかないだろ
assoc
ftype
英字大文字を小文字に変換するコマンドがないよね
setがあるだろが なんとかとsetは使いよう
どういうことでござるか?
set x=%x:A=a%
コマンドプロンプト初心者です><
"xxx".拡張子 というファイルをD&Dして、以下のようなテキストファイルを吐き出すバッチ作りたいのですが
↓テキストファイルの中身↓
video = MPEG2Source("xxx".d2v)
audio = WavSource("xxx".wav)
AudioDub(video, audio)
"xxx"の部分にD&Dしたファイルの名前だけを代入して吐き出させるようにするにはどうしたらよいでしょうか><
こりゃー釣りだな
釣りか真性かというと後者の方じゃないかと思うんだが
ちょっと調べりゃわかるけど、
1) バッチパラメータとして、%0~%9ってのがある
2) パラメータには修飾子が使える。 %~1, %~n1など
3) 表示コマンド echoで出力先を標準出力からファイルにリダイレクト > or >> できる
>276さん
なんとか作成することができました。
にありがとうございました~
>>269
@if(0)==(0) echo off
if "%~1"=="" echo パラメタ1に入力ファイル名(変換元)を指定してください& goto :eof
if not exist "%~1" echo 指定ファイル"%~f1"が存在しません& goto :eof
cscript //nologo //e:jscript "%~f0" <"%~1" >output.txt
goto :eof
@end
WScript.Echo(WScript.StdIn.ReadAll().toLowerCase());
スゲー昔のことで悪いけど
>>127
これの動作を誰か解説してくださいな
>>279
http://otnx.jp/CMD/?%C1%B4%C8%CC%2F%B9%BD%CA%B8%B2%F2%C0%CF#sdbf768f
>>279
文字の置換
%cd% 中の「\」を「&set cdname=」で置換するとどうなるか
c:\aaa\bbb\ccc → c:&set cdname=aaa&set cdname=bbb&set cdname=ccc
即ち
c:
set cdname=aaa
set cdname=bbb
set cdname=ccc
個人的にはdos窓を沢山開いてる時の識別用に
%CD:\=&title % をよく使う
ありがとさん
俺が混乱してた理由
&で一旦切れると思ってた。
そのまま置換されてさらに再度評価されるんだね。
再度評価じゃなくて評価の順序でしょ
cmd.exe だと title でウィンドウのタイトルを設定できるけど
powershell.exe ではどうすればいい?
$Host.UI.RawUI.WindowTitle = "title"
とかそんな感じ
あんがと
とりあえず
function title {$Host.UI.RawUI.WindowTitle = $args[0]}
としといた
powershell.exe だと $Host.UI.RawUI.WindowTitle でウィンドウのタイトルを取得できるけど
cmd.exe ではどうすればいい?
ウィンドウの概念が無いんじゃ…
できました
制限ユーザでログオンしてて、無線LANと有線LANの有効/無効を手軽に切り替えたいです。
管理者のパスワードは手入力で。
devcon.exeを入れて↓のショートカットを作って実行してもうまくいきません。
%windir%\system32\runas.exe /user:USERNAME "c:\bin\devcon enable 'PCI\VEN_HOGEHOGE'"
runasのパスワード入力してもそのまま終了(エラーが出てるだろうけどすぐ消えちゃって確認できない)。
devcon enable "PCI\VEN_HOGEHOGE"とすべきところをダブルクォートの入れ子がダメだったのでシングルクォートを使ってみたのが原因だと思う。
どうすればいいの?
MakeMeAdmin.cmd(制限ユーザで一時的に管理者権限のコマンドプロンプトが起動できます)でdevcon enable "PCI\VEN_HOGEHOGE"としたら期待通りに変更できました。
なので"PCI\VEN_HOGEHOGE"のハードウエアIDが間違ってるとかではないと思う。
あと、ショートカットを実行後に(表示だけでも)一時停止みたいに出来ない?
バッチファイルのpauseみたいなの。
キーを押さないとウィンドウが閉じないようにしたい。
XP PRO SP3です。
runas/?
あと、cmd/k
ありがとん。
runas /? の例のところに
> runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""
て書いてあったのでダブルクォートの入れ子は使えるってことなのかな?
でも↓のをショートカットにしてみたけどやっぱエラーになる。
cmd.exe /k "%windir%\system32\runas.exe /user:USERNAME "C:\bin\devcon.exe enable "PCI\VEN_HOGEHOGE"""
USERNAME のパスワードを入力してください:
C:\bin\devcon.exe enable PCI\VEN_14E4 をユーザー "DOMAIN\USER" として開始しています...
'DEV_HOGE' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
'HOGE2' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
'HOGE3""' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
\"
ありがと。節穴だった。
\でエスケープするのか。
もう一段深くするのは\\"じゃないの?↓うまくいかないよ。
cmd.exe /k "%windir%\system32\runas.exe /user:USERNAME \"C:\bin\devcon.exe enable \\"PCI\VEN_HOGEHOGE\\"\""
何も試してないしヘルプすら見てないんだが、
\がエスケープ文字だというんなら、
PCI\VEN_HOGEHOGEの中の\とかもエスケープがいりそうな気がする。
あ、そうか。
じゃパスのデリミタの\もエスケープしなきゃダメだな。
もう訳わからんくなってきた。(´・ω・`)
CommandLineToArgvW has a special interpretation of backslash characters when they are followed by a quotation mark character ("), as follows:
•2n backslashes followed by a quotation mark produce n backslashes followed by a quotation mark.
•(2n) + 1 backslashes followed by a quotation mark again produce n backslashes followed by a quotation mark.
•n backslashes not followed by a quotation mark simply produce n backslashes.
㌧。また少し賢くなった。
cmd.exe /k "%windir%\system32\runas.exe /user:USERNAME \"C:\bin\devcon.exe enable \\\"PCI\VEN_HOGEHOGE\\\"\""
でも失敗。
が、エラー(?)の種類が変わった。
RUNAS 使用法:
RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
/user:<ユーザー名> プログラム
...略...
"PCI\VEN_HOGEHOGE"のところに&が入ってた。"PCI\VEN_HOGE&hage"みたいに。
これ関係あるのかな?
ダブルクォート中の&は特殊文字として扱われなくてそのままだと思い込んでた。
後出しでホントに申し訳ない。
^
cmd.exe /k 外すとうまく行く。
%windir%\system32\runas.exe /user:USERNAME \"C:\bin\devcon.exe enable \"PCI\VEN_HOGE&hage\""
取りあえず一番目の目的は達成できた。
けど、もうちょっとがんばってみる。
runas.exeが引数の解釈が独自だったりするのかな??
日記に付き合ってくれてありがと。
runas.exeがMS標準シンタクス
cmd.exeが独自解釈
このページは2chの過去ログページです。