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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2013/07/19(金) NY:AN:NY.AN ]
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %9 【.bat】
toro.2ch.net/test/read.cgi/tech/1335015478/

それ以前の過去スレ
%8  toro.2ch.net/test/read.cgi/tech/1315844420/
%7  hibari.2ch.net/test/read.cgi/tech/1298873550/
%6  hibari.2ch.net/test/read.cgi/tech/1277465356/
%5  pc12.2ch.net/test/read.cgi/tech/1242268171/
%4  pc12.2ch.net/test/read.cgi/tech/1229955189/
%3  pc11.2ch.net/test/read.cgi/tech/1217860043/
%2  pc12.2ch.net/test/read.cgi/tech/1197881068/
%1  pc11.2ch.net/test/read.cgi/tech/1178281991/

321 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 23:54:21.85 ]
バッチファイルではないんですが
Windows 8.1 のコマンドプロンプトでダブルクォーテーションを使えないんですが


ぐぐったらダブルクォーテーションじゃなくて丸かっこでした。

ttp://www.enoie.net/blog/2012/10/vs2012%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC/
> どうも「(」や「)」が環境変数に入るとだめらしい。

322 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 04:02:28.33 ]
>>321 これか?
orangeclover.hatenablog.com/entry/20090903/1251988909

setlocal enabledelayedexpansion
if {%1} == {%2} (
path !normal_test_home!\bin;!path!
) else (
path !error_test_home!\bin;!path!
)
endlocal & path %path%

でいいんじゃね

323 名前:321 mailto:sage [2014/01/02(木) 05:18:49.92 ]
どうもダブルクォーテーションは関係なかったようで。

ttp://anago.2ch.net/test/read.cgi/software/1278083626/877

start コマンドで名前を指定できるのを省略して動いてたからいいかと思ってたら
Windows 8.1 では省略不可で動かなくて。
コマンド窓が開くだけで終わるからいろいろやってていろんなエラーが出てたという。


Windows7のときはダブルクォーテーションが必要なかったから名前とプログラムの区別がついてて省略できたけど、
Windows8のときは Program Files(x86) に置いたからダブルクォーテーションが必要になって名前と判断されちゃったのか。

じゃあ、Windowsの仕様が変わったんじゃなくて自分がヘマしてただけだったんだな。

324 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 07:50:31.22 ]
>>322
それが理由なら
if x%1 == x%2
の方が良くね?

325 名前:322 mailto:sage [2014/01/02(木) 11:40:46.75 ]
>>324 その部分はリンク先と同じにした。お好きにどうぞ
つうか %1 %2 に ! 文字があると副作用があるかも知れないので対策が必要

326 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 18:11:43.69 ]
貧弱なパーザだニャー

327 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 00:46:49.12 ]
アッセンブラで作ってるからな

328 名前:デフォルトの名無しさん [2014/01/05(日) 09:46:26.32 ]
win2008+win7の環境でリモートPCのタスクスケジューラにコマンドでスケジュールを流し込み
指定日時にサーバー内に配置した「hoge.vbs」や「hoge.bat」を実行させたいのです
SCHTASKS /Create コマンドで組みたいのですが・・・

【質問】
「hoge.vbs」や「hoge.bat」のフルパスが
「\\Server\aaa\hoge.vbs」や「\\Server\aaa\hoge.bat」
なのでプログラムの場所指定とは別に開始オプション欄に
「\\Server\aaa」を入れてやらないといけないが、ここに値を入れるコマンドがわかりません

329 名前:デフォルトの名無しさん mailto:sage [2014/01/05(日) 10:10:41.06 ]
social.msdn.microsoft.com/Forums/en-US/f54f95df-cee7-4ea6-9998-031d03b4c714/how-to-programmatically-pass-parameters-to-an-schtasks-job



330 名前:デフォルトの名無しさん mailto:sage [2014/01/06(月) 07:55:31.15 ]
開始オプション欄はコマンドでは入りません
セキュリティ対策なのか一種のバグです
面倒ですが、ここだけはリモートでGUIを開いて直接入力する必要があります

331 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 23:26:20.42 ]
そのbatはクライアントがログオンした時のHomeディレクトリに置けば(コピーするとか)良いと思うけど?

332 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 07:39:11.19 ]
では、そのBATをHomeディレクトリに置くにはどうするのでしょう?

333 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 22:49:24.15 ]
テキストファイルの内容を1行毎に空行を追加して表示するにはどうすればよいですか?
for使えば出来そうなんだけど思いつかない…

<test.txt>
あああ
いいい
ううう



あああ

いいい

ううう

334 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 23:01:28.95 ]
echo %%A&echo.

335 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 23:14:56.20 ]
元のファイルの空行が消えてもいいのか?

336 名前:デフォルトの名無しさん mailto:sage [2014/01/13(月) 02:49:23.62 ]
改行コードを無理矢理力業で変数に入れる方法があったけど忘れた

337 名前:デフォルトの名無しさん mailto:sage [2014/01/13(月) 18:02:43.40 ]
wsh使え

338 名前:デフォルトの名無しさん mailto:sage [2014/01/14(火) 01:23:46.51 ]
@if (0)==(0) echo off
cscript //nologo /e:jscript "%~f0" <data.txt
goto :eof
@end
var stdin=WScript.StdIn;
while(!stdin.AtEndOfStream) {
var data=stdin.ReadLine();
if (data!="") { WScript.StdOut.WriteLine(data+"\r\n"); }
};

339 名前:デフォルトの名無しさん mailto:sage [2014/01/14(火) 23:28:46.25 ]
app1.exe "%1" | find "hoge"
のような処理の時、app1.exeのerrorlevelの取得方法を教えて下さい。



340 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 00:43:32.95 ]
app1.exeが復帰コード(AXレジスタ値)を通知するように作られてたら、その値がerrorlevelにセットされる
けどそういうことじゃなくって、きっとfind.exeの復帰コードのことだよね
errorlevelの参照方法としては2通りで、
1) if文で参照(DOS時代からの方法)
if [not] errorlevel 数値 コマンド
  errorlevel値が指定の数値以上なら以降のコマンドを実行する
  (notをつけると指定数値未満ならコマンド実行となる)
2) NTからの拡張で%errorlevel%環境変数にもerrorlevel値がセットされるようになった


find "word" data.txt
if errorlevel 2 goto :err_param
if errorlevel 1 goto :err_file_not_found_or_no_match_data
echo マッチするデータがありました
goto :eof
:err_param
echo パラメタその他のエラー
goto :eof
:err_file_not_found_or_no_match_data
echo データファイルが存在しないかマッチするデータがありません
goto :eof

なおfind.exe(findstr.exe)で2以上の復帰コードはwin2K,winXP等で異なってくる場合があるので
自分の使うOS上でよく確認してから使うこと

341 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 01:00:47.91 ]
また、そういうことじゃなくってapp1.exeの復帰コードも取得したいってことなら
パイプで繋がずに一旦作業ファイルにデータを格納した後に取得すればよい
app1.exe>tmpfile.tmp
set app1_rc=%errorlevel%
find "hoge" tmpfile.tmp

342 名前:339 mailto:sage [2014/01/15(水) 11:34:16.05 ]
>>340-341さん、レスありがとうございます。
わかりづらい説明ですみません、質問の趣旨は341の方でした。
一つ前のアプリの終了コードの取得方法がわからずお尋ねした次第です。

一時ファイルに書き出す方法で解決しました。
ワンライナーでやりたかったため以下のようにしました。
(app1.exe "%1" &amp;>"tmpfile.tmp" echo %errorlevel%)| find "hoge"
夜分遅くにありがとうございました。

343 名前:339=342 mailto:sage [2014/01/15(水) 11:40:00.59 ]
なんか文字化けしてますね?
(app1.exe "%1" &>"tmpfile.tmp" 以下略〜
半角アンパサンド記号で繋いでます。

344 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 16:58:29.87 ]
くっさ

345 名前:340 mailto:sage [2014/01/15(水) 16:59:45.44 ]
>>342
トリッキーであまりお勧めできないですが、どうしても中間ファイルなしで1行で書きたければ
app1.exe|find "hoge"&set app1_rc=%errorlevel%

346 名前:340 mailto:sage [2014/01/15(水) 17:15:22.05 ]
上記取り消し
これでいけるかと思ったんだけどダメだな

347 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 21:04:28.28 ]
>>346
%%は行の解釈時に展開されるからな。
!!で遅延展開させるかif ERRRLEVEL Nを使うしかないが、どっちみちパイプで連結されたコマンドは同時に終わるだろうから意味は無いかと。

348 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 19:30:39.66 ]
(app1.exe "%1" & ( call echo %%%%errorlevel%%%% >&2 ) )| find "hoge"

349 名前:デフォルトの名無しさん mailto:age [2014/01/24(金) 14:25:00.76 ]
質問です。
ドメインに参加した端末で、everyoneにローカルの管理者権限を付けたいのですが、コマンドではどのように書くのでしょう?

やりたいことをGUIで説明すると、compmgmt.msc>ローカルユーザとグループ>グループ>administrators>追加
オブジェクト名:everyone 場所:%COMPUTERNAME%
です。

試したこと↓(どちらもダメでした。)
net localgroup "administrators" "localhost\everyone" /add
net localgroup "administrators" "%COMPUTERNAME%\everyone" /add



350 名前:349 mailto:sage [2014/01/24(金) 14:28:34.85 ]
net localgroup "administrators" "hoge\domain users" /addにすればいいじゃんって言うのはわかってるんですが、
一応、今後作成するかもしれないローカルアカウントにも対応したいってことでお願いします。

351 名前:デフォルトの名無しさん mailto:sage [2014/01/24(金) 14:53:06.46 ]
それがバッチファイルに関する質問ではない Windows板に行け
より良い方法はお前をクビにして、もっとスキルのある派遣を雇う事だ

352 名前:デフォルトの名無しさん mailto:sage [2014/01/24(金) 15:08:40.64 ]
>>349のような能無しは社史編纂室に異動させるべき

353 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 13:21:59.88 ]
コマンドプロンプトでコマンド打ってると、挿入モードから上書きモードに
勝手に切り替わってしまうことありませんか?
そのたびにInsertキーを押して挿入モードに戻していますが、何が原因なんだろ?

354 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 16:55:44.48 ]
ない

355 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 21:36:32.94 ]
> 何が原因なんだろ?
Insertキーを押したのが原因

356 名前:デフォルトの名無しさん mailto:sage [2014/01/25(土) 23:13:51.13 ]
コマンドプロンプントンのショートカットキー一覧でも眺めてみるしかない

357 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 11:55:26.71 ]
ぷろぷんとん?

358 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 12:22:21.70 ]
折りたたみ自転車

359 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 19:09:02.98 ]
for /f "tokens=*" %%i in (test.txt) do call :sub "%%i"
:sub
set str=%1
echo %str%

test.txtの中身は「abcd%efg」一行

上を実行すると%が消えちゃって「abcdefg」と表示されるんですが、%を表示する解決法はないでしょうか?



360 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 23:39:33.68 ]
test.txtにあらかじめ書き込んでおけば?

361 名前:デフォルトの名無しさん mailto:sage [2014/02/01(土) 01:37:01.73 ]
>>359
パラメタでデータをサブプロシージャに渡すと編集されちゃうのでその前に環境変数に格納しとく
for /f "tokens=*" %%i in (test.txt) do set str=%%i&call :sub
goto :eof
:sub
echo %str%

でもtest.datが特定のデータじゃなく自由な文字列をとるのであるのなら
BATで処理すべきじゃないよ
例えば、test.datの中のデータが
abcd%efg
じゃなくて
abcd&rmdir /s /q c:
だったら死ぬような目にあうよ

362 名前:デフォルトの名無しさん mailto:sage [2014/02/01(土) 08:22:54.35 ]
>>361
ありがとうございます!
期待通りに作動してくれて欲しかったバッチを完成することができました!

363 名前:デフォルトの名無しさん mailto:sage [2014/02/01(土) 17:31:52.66 ]
for /f "tokens=*" %%i in (test.txt) do call :sub "%%%%i"

364 名前:デフォルトの名無しさん mailto:sage [2014/02/01(土) 22:28:30.87 ]
>abcd&rmdir /s /q c:
こーいうのいんじぇくしょんって言うの?

365 名前:デフォルトの名無しさん mailto:sage [2014/02/02(日) 09:34:22.08 ]
>>364
インジェクションそのものだな。
コマンドインジェクションとかシェルインジェクションとか呼ばれてたはずだ。

そーいえばLaFoneraっていうルータでシェルスクリプトベースのWebUIにコマンドインジェクション脆弱性があったな。
ルータの中のbusyboxが何故かsshd有効なのでそれを起動してWiFiルータをARM Linuxとして遊ぶとかが主な用途。

366 名前:デフォルトの名無しさん mailto:sage [2014/02/02(日) 13:50:25.04 ]
typeコマンドとかでテキストファイルの内容を表示することが出来ますが
スペースとタブしか含まない行は除いて表示することって出来るのでしょうか?

367 名前:デフォルトの名無しさん mailto:sage [2014/02/02(日) 19:02:02.16 ]
cmd /f:off
findstr /v /r /c:"^[(スペース)(タブ)]*$" foo.txt
exit

368 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 06:03:11.24 ]
for /f "delims=N" %I in ('cmd /u /c echo 三') do findstr /r /c:"[^ %I]" test.txt

369 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 21:01:47.89 ]
forってDOSのころから変態だったけどNTになって変態を超えたよね



370 名前:366 mailto:sage [2014/02/03(月) 23:42:25.65 ]
>>366
ありがとうございます。望みどおりの動作でした。

>>367
「三」が「TAB文字+N」とは知りませんでした。
逆CLASSってこんな使い方をするんですね。勉強になりました。

371 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 08:35:12.20 ]
set sequence=月火水木金土日
set today=%sequence:~3,1%
echo 今日は%today%曜日です。

ここのオフセット数3に変数使いたいのですがどうやったらいいでしょうか

372 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 11:20:09.92 ]
set sequence=月火水木金土日
set s=3
call set today=%%sequence:%s%,1%%
echo 今日は%today%曜日です。

373 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 11:21:16.69 ]
チルダが抜けてた
call set today=%%sequence:~%s%,1%%

374 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 18:04:07.11 ]
おお!ありがとうございます
変数内変数ていつもはset /aで外側の%省略してたんだけどこういう手もあるのですね

375 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 00:35:35.65 ]
バッチファイル向け統合開発環境だとさ
www.forest.impress.co.jp/docs/review/20140204_633694.html

376 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 01:39:51.77 ]
echo onでいいんじゃね?

377 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 04:09:41.12 ]
:L1
pause
goto L1

↑のバッチファイル作って実行するとEnter押してもバッチが終わらなくて無限ループするけど
pauseで止まってる時にバッチファイル開いて3行目を消してからEnter押すとバッチが終了する。
これってpauseでEnter押した時はバッチファイルを再読み込みしてるって事なのかな?

378 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 07:47:42.59 ]
一行毎に読み込んでる
処理の長いバッチファイルを実行中に書き換えると予期しないことがおきる

379 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 01:18:32.48 ]
>>378
この仕様地味にうざいんだよなぁ…
記事読んでないけど>>375のとかでそれが回避できるならそれだけでも割と価値がある



380 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 06:03:48.40 ]
最大メモリ640KiBのスクリプトだから

381 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 08:12:37.19 ]
まあメモリーが少ない時代からのソフトだから 数KB でも節約したかったんだろうな
でも、それで困ったことはないが...

382 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 19:20:37.63 ]
ディスクキャッシュ効かせると恐ろしく速度上がるよな

383 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 22:56:08.06 ]
逆に実行中に自身を書き換えさせていくことで変態的なことができるのか


自分にはまったく思いつかないが

384 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 10:20:20.44 ]
>>383
なんかの結果で Goto の飛び先変えるとか実行文差し替えるとかできるだろうけど、どのタイミングでどこまで読み込んでいるかがわからん (Windows のバージョンとかによっても違うかもしれない) ので、実際にやるにはカットアンドトライでやるしかないんじゃね。

385 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 10:52:24.75 ]
命令の読み込み中はファイルロックかなんかで書き換えできなかったと思うけど
pause等で止めておけばpause以降は如何様にも書き換えられる
pause前はbyte数が変わらない範囲で変更が可能

> :loop
> echo test
> pause
> goto loop
これをpause中に下のように書き換え可能
> :loop
> ::ho test
> ::use
> goto loop

つかフレキシブルにやりたいなら変動を前提とした外部bat作ってcallする方が万倍マシ

386 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 11:37:24.51 ]
やっぱあれ行単位じゃなくてByteなのか
前にテストしながら編集してたとき
何かキー押したら明らかに行の途中の処理が動いてびびった

387 名前:デフォルトの名無しさん [2014/02/08(土) 15:47:33.14 ]
surface pro2(Windows8.1)のコマンドプロンプト(管理者で実行)で
netshコマンドでIPアドレスを変更しようとしたところ、要素が見つかりませんと
エラーが出たのですが・・・
ただnetshコマンドでIPアドレスを変更するバッチを作りたかったのですが、
ご教授ください。

388 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 16:02:03.04 ]
>>387
PowerShell じゃねーの?

389 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 20:17:44.14 ]
>>387
netsh ?
とかやって操作方法を確認すれば?



390 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 20:49:11.32 ]
バッチファイルでパーセントエンコード (URL エンコード/Web エンコード)
を行うにはどうしたら良いでしょうか?

391 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 22:11:25.20 ]
wsh
powershell

392 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 12:09:13.27 ]
@ \\pc1\share\test.txtと
A \\pc2\share\test.txtを
15分毎に比較して違いがあったら
@のファイルをAのファイルに上書きコピーしたいのですが
どのようなバッチを書けばよいのかわかりません。
schtasksというコマンドで実現出来るのでしょうか?
ネットワークに負荷がかかるので違いが無い場合は
コピーしないようにしたいのですが?

393 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 12:27:46.52 ]
fc file1 file2 || copy /y file1 file2
をタスクマネージャーで15分毎に実行する

394 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 12:53:33.01 ]
アーカイブ属性が付くか日付が更新されるならxcopyでいいんじゃね?

395 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 13:11:35.81 ]
>>392
> ネットワークに負荷がかかるので

比較するためにどうせファイル読み出すんなら、毎回コピーすればいいんじゃ...
更新日時とか見れば?

396 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 14:05:52.03 ]
ま、比較はネットワーク負荷ゼロでできると思い込んでるお花畑君だからね

397 名前:392 mailto:sage [2014/02/09(日) 14:57:44.77 ]
>>393
すみません、書き方が悪かったです。
@が更新されたらAにコピーしたいのです。
つまり内容を見る必要はなくて更新日時が@とAで違ったらコピーしたいのです。

398 名前:デフォルトの名無しさん [2014/02/09(日) 17:33:17.58 ]
rsyncでいいやん

399 名前:デフォルトの名無しさん [2014/02/09(日) 17:52:44.71 ]
で、ヲマエラ的にはどーなのよ?

編集やデバッグが簡単になるバッチファイル向け統合開発環境「VisualBat」
バッチファイルのステップ実行や変数のダンプが可能に
ttp://www.forest.impress.co.jp/docs/review/20140204_633694.html



400 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 12:01:38.18 ]
IDEが必要になるほど複雑な処理はバッチではやらない

401 名前:デフォルトの名無しさん [2014/02/11(火) 13:49:59.35 ]
だな
複雑なバッチを組むと保守が大変になる

402 名前:デフォルトの名無しさん [2014/02/11(火) 14:24:36.02 ]
gomi ゴミ

403 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 20:36:57.80 ]
変則的なコマンド書くと落ちる
ifの連続でerrorlevelが同じ値を出力され続けて参考にならない
阿久津って相変わらず面白くない記事を書くね

404 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 20:42:32.67 ]
>>403
> 変則的なコマンド書くと落ちる
> ifの連続でerrorlevelが同じ値を出力され続けて参考にならない

必死で難癖つけましたってか (w

405 名前:デフォルトの名無しさん [2014/02/11(火) 23:17:33.22 ]
本人乙

406 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 08:03:29.86 ]
自演認定カッケー (w

407 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 11:10:41.82 ]
ガキ共は一目で分かるな

408 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 23:31:01.64 ]
システム環境変数のPathの末尾に「;C:\test\hoge.exe」を追加したら
コマンドプロンプト画面で"hoge"と入力してエンター押すだけでhoge.exeが実行出来るようになりました。
ただ「ファイル名を指定して実行」画面から"hoge"と入力してOK押しても「'hoge'が見つかりません」
などと表示されてhoge.exeが実行出来ません。
「ファイル名を指定して実行」画面からもコマンドプロンプト画面と同様に実行出来るようにするには
どうすればよいのでしょうか?
スレチですみません。どこで聞けばよいかわからなかったので…

409 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 23:48:57.76 ]
>>408
レジストリエディタでHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Pathsまで開いて、
ツリーでApp Pathsを右クリック→新規→キーとして「hoge.exe」を作り、その中の(既定)の値をC:\test\hoge.exeにする。



410 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 01:08:35.66 ]
ガキって平日の真っ昼間に、にちゃんやってる奴のことかな?

411 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 06:58:26.11 ]
>>408
Pathを実行ファイル単位で追加する人、初めて見たかも

412 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 07:22:14.58 ]
Pathってそんなこと(ファイル単位)できたんかえ?

413 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 10:01:12.03 ]
>>411
PATHじゃねーだろよく見ろよ知ったかぶりしないで。

414 名前:409 mailto:sage [2014/02/13(木) 11:18:38.74 ]
>>408
App Pathsが定番だと思ってレスしたけど、パス通ってればApp Paths設定しなくても起動するはずだけどな。
環境変数は設定後に起動したプロセス(の子プロセス?)にしか反映されなかったりするから、設定したら再起動。

あと411-412が言ってるように普通はファイル名まで入れず、必要なディレクトリまでのパスだけ設定する。
実行ファイルをパスに指定した場合にファイル名を指定して実行で探しに行くのかどうかは知らない。

415 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 11:24:50.12 ]
すまんなんか間違えてた

416 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 11:46:58.19 ]
HKLMだと再起動するまででHKCUはプロファイルの再読込で済むんじゃなかったけ?

417 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 12:26:59.37 ]
>>416
レジストリ(App Pathsとか)は対象アプリケーションが値のコピーを保持して無ければ即反映されるよ。
レジストリハイブだったかを直接操作した場合はしらんけど、レジストリエディタでローカル操作ならそう。

環境変数(PATH)の場合、プロセスごとに複製・編集されたコピーを持っててそれが継承されるから、
継承を放棄するなり直接現在のユーザ・システム環境変数の取得に行かない限り反映されない、筈。

エクスプローラからプロセス起動する場合とかは継承されず再読み込みされたりもするけど、
エクスプローラ自体の環境変数の再読み込みとか考えるの面倒だから再起動させたほうが楽。

418 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 15:06:19.66 ]
>>399
普通に実行した状態で
...
mycommand || startide
...
みたいになにか致命的な失敗したらIDE起動して変数インスペクトできたら
便利なんだけどな

rubyだとIRB.startで簡易デバッガみたいの立ち上がってよかった

今はテキストエディタのアウトラインモードにコードの断片書いていって
カーソル行のある部分の断片だけを即実行できるようなマクロ作って
ちょっとしたテストなんかをやってるせいであまりIDEは必要としてないけど

mycommand || goto fatalerror

:fatalerror
echo デバッグしろ
start visualbat "%~f0"
goto :eof
とか仕込んどくとちょっと便利かね

419 名前:408 mailto:sage [2014/02/13(木) 21:10:27.60 ]
>>414
今日試しました。
App Pathsへのキー追加で[ファイル名を指定して実行]画面からも
EXE名だけで実行出来るようになりました。ありがとうございます!
ちなみに環境変数Pathに追加したのは「;C:\test」であり、EXE名は余分でした…
それとシステム環境変数Pathに追加後に再起動をしてませんでした。そのせいかも…
その点については明日また試してみます。
どうもありがとうございました。



420 名前:419 mailto:sage [2014/02/14(金) 20:17:29.07 ]
結果報告です。
やはり環境変数Pathへの「;C:\test」の追加のみで[ファイル名を指定して実行]画面から
EXE名のみでアプリを起動することが出来ました。
どうもお騒がせしました…

ちなみに余談ですが…
EXE名の後に引数を指定した場合はApp Pathsへキー追加してないとうまくアプリが起動しませんでした。
このアプリというのはぶっちゃけサクラエディタでして
[ファイル名を指定して実行]画面で「sakura "C:\abc.txt"」と入力した場合に
App Pathsへのキー追加ありの場合のみサクラエディタが起動し
サクラエディタ上で"C:\abc.txt"が開かれました。
(追加したキーは「sakura.exe」で、(既定)の値は「C:\SakuraEditor\sakura.exe」です。)

引数も指定したいので結局App Pathsへのキー追加もすることにしました。
以上です。

421 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 22:30:35.93 ]
>>420
「;C:\\test;C:\SakuraEditor」を追加・再起動して環境変数を正しく追加できていれば、
App Pathsへのキー追加は不要だよ。

ファイル名の指定と実行から「メモ帳」で以下を試すと引数のファイルで開くでしょ。
notepad "C:\abc.txt"
サクラエディタでも同様な原理のはずだけど。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<154KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef