09/11/17 23:40:05
こんな感じか?
echo echo start "" コマンド.bat "引数" ^>B.bat >A.bat
414:デフォルトの名無しさん
09/11/18 01:08:33
>>413
当方412ではありませんが、感動しました。
^>を使えばそういう事ができるんですね
差し支えなければ、^のしくみを教えていただけないでしょうか?
415:デフォルトの名無しさん
09/11/18 01:19:52
(^^)
416:デフォルトの名無しさん
09/11/18 11:42:53
>>414
単なるエスケープ文字
417:デフォルトの名無しさん
09/11/18 17:30:23
^^は^をエスケープしてるので
echo (^^)
は
(^)
となる
418:412
09/11/18 20:00:18
>>413
レス遅くなって申し訳ないです。ありがとうございました!
ばっちり希望どおりの動作をしてくれるようになりました!
>>416>>417
仕組みがよくわかってなかったので勉強になりました。
みなさんどうもありがとうございました。
419:デフォルトの名無しさん
09/11/19 22:15:12
bash とかでいうところの``で囲んだ時のような、コマンドの出力結果をコマンドラインオプションに回す文法はありませんか?
420:デフォルトの名無しさん
09/11/19 23:41:46
for /f "usebackq" %I in (`dir /b`) do echo %I
421:デフォルトの名無しさん
09/11/20 00:28:27
>>420
ありがとうございました
422:デフォルトの名無しさん
09/11/21 01:56:20
usebackqはコマンド中に「'」を使う必要がある時に「'」の代わりに「`」を使うってオプションだろ?
for /f %i in ('dir /b') do echo %i
でいいのに何故わざわざusebackq付けんの?
423:デフォルトの名無しさん
09/11/21 02:15:37
420じゃないけど常に usebackq 付けるようにした方が面倒な事考えなくて済む。
URLリンク(www.atmarkit.co.jp)
424:デフォルトの名無しさん
09/11/21 16:02:45
好みだろ
どーでもいー
425:423
09/11/21 16:20:50
>>424
そう、好み
てか昔ハマッたことがあるから、俺は付ける派
426:デフォルトの名無しさん
09/11/24 13:26:23
外部プログラムを起動させるコマンドを実行すると
そのアプリが終了するまでbatへ制御が戻らないのですが
それを回避することは可能ですか?
427:デフォルトの名無しさん
09/11/24 13:48:22
startコマンドを使う
428:デフォルトの名無しさん
09/11/24 16:10:21
batファイルを分けることなく処理の優先順位を変更する方法があれば教えてください。
429:デフォルトの名無しさん
09/11/24 18:57:10
startコマンドを使う
430:428
09/11/24 19:10:35
>>429
start /b /low :exec ではうまくいきませんでした。
どのように記述すればいいのでしょうか?
431:デフォルトの名無しさん
09/11/24 22:29:40
ところで
URLリンク(itpro.nikkeibp.co.jp)
start /b test.bat
てどういう意味がある?
call test.bat
とは違うの?
432:デフォルトの名無しさん
09/11/25 12:44:00
ウィンドウ開かないだけで、別プロセスのcmd.exeが立ち上がる…んだと思う。
433:デフォルトの名無しさん
09/11/25 20:20:58
>>431
誰が書いたか知らんが、阿呆が意味も分らず、最初のオプション使って、無理矢理、使用例を作っただけなんだろ
434:デフォルトの名無しさん
09/11/25 20:25:13
>>430
goto %1
start /low "" %0 :exec
435:デフォルトの名無しさん
09/11/27 16:18:48
そういやstartって
start file
はokで
start "file"
はngな時があるけどどういう理屈なんだろうか
436:デフォルトの名無しさん
09/11/27 16:27:01
理屈って言う程のことはないよ
start/?見りゃ自明だろ?
437:デフォルトの名無しさん
09/11/27 16:32:00
>>430
wmiのsetpriorityを使え
438:デフォルトの名無しさん
09/11/27 20:12:44
そんなこと言っても難しかろ
startにしとけ
439:デフォルトの名無しさん
09/11/29 02:25:00
data.dat というファイルがあったとして、これを一日に一回
data1129.datみたいに日時をつけてバックアップとして保存していけるようなバッチファイル
作れる方いましたら教えてください
スタートアップに登録するとして、同日に一回でも度ってあったらコピーしないという仕様で
440:デフォルトの名無しさん
09/11/29 03:40:36
if not exist data%date:/=%.dat copy /b data.dat data%date:/=%.dat
441:デフォルトの名無しさん
09/11/29 13:46:20
プロンプト文字にerrorlevel出すにはpromptコマンドにどう書けばよい?
442:デフォルトの名無しさん
09/12/02 15:20:51
これは、結局バッチスクリプトとは関係ないんですけど、copyコマンドでオプションに
/A(テキストモード)を指定しても、BOMありUTF-8のテキストファイルを結合すると
ファイルとファイルの間にBOMが残るんです。
現在はWinXPのコマンドプロンプトでしか試せないんですが、VistaやWin7なら、ちゃん
とBOMを外してくれますか?
443:デフォルトの名無しさん
09/12/02 15:40:21
Vistaでやってみたが、入ってるね
/Aは改行コードしか見ないだろうから仕方がないかも
444:デフォルトの名無しさん
09/12/02 15:44:42
あ、改行とEOFだったかな
445:デフォルトの名無しさん
09/12/02 19:41:05
/A ASCII テキスト ファイルとして扱います。
UTF-8じゃないのに何言ってんだか
446:デフォルトの名無しさん
09/12/02 19:50:38
/Aが改行をどうするって?
447:デフォルトの名無しさん
09/12/02 21:49:14
COPY /8
448:デフォルトの名無しさん
09/12/03 14:30:54
バッチスクリプトならできるが、関係ないな
449:442
09/12/03 18:30:00
>>443
Vistaでも駄目ですか、どなたかWin7の状況を教えて下さい。
450:デフォルトの名無しさん
09/12/03 20:27:40
逆に7でこの挙動が変わってたらおかしいでしょう
451:デフォルトの名無しさん
09/12/03 20:43:06
別におかしくないが?
452:デフォルトの名無しさん
09/12/03 20:46:19
chcp 65001
453:デフォルトの名無しさん
09/12/03 21:15:54
BOM削除してからcopyすれば?
454:デフォルトの名無しさん
09/12/03 21:54:01
ところで^Z削除するのはどうすれば?
455:デフォルトの名無しさん
09/12/04 15:10:43
>>452
フォントを変えるコマンドは?
456:デフォルトの名無しさん
09/12/04 21:47:30
ぐぐれ
まあ変えても解決にはならんが
457:デフォルトの名無しさん
09/12/04 21:58:36
作れ
setconsolefont()
setcurrentconsolefontex()
458:デフォルトの名無しさん
09/12/08 13:13:56
代替コマンドシェルにnyacusなんてのがあるんだな。
cmdと比べると構文が結構まともだ。
PowerShellより圧倒的に軽いしちょっと覚えてみる気になった。
459:デフォルトの名無しさん
09/12/09 03:55:32
nyacus落ちない?数年前に使ったけど、それでやめた。
460:デフォルトの名無しさん
09/12/10 01:06:30
今のところ落ちてないよ。まだ大した使い方してないけど。
最終更新日が先月でまだまだメンテが続いてるね。
461:デフォルトの名無しさん
09/12/11 15:53:24
CMD.exeのfor文は頑張りすぎ
462:デフォルトの名無しさん
09/12/11 18:23:45
runasの/trustlevelってどういうときに使うの?
463:デフォルトの名無しさん
09/12/11 21:14:34
for /F %%a in (filelist.txt) do move "%%a" %dir%
filelist.txtにファイルの一覧をリストアップしてそのファイルをすべて特定のフォルダへ移動したいです
ですがファイル名に半角スペースが含まれていると移動されずにスルーされてしまいます
困ってしまいます
お願いします
464:デフォルトの名無しさん
09/12/11 21:15:18
>>439
>>440
これの改良版で1週間分のみバックアップを残す仕様に出来る方おりませんか?
ファイルが7個以上あった場合、古いものから消していくようになると思うんですが
465:デフォルトの名無しさん
09/12/11 21:25:48
>>463
"delims="
466:デフォルトの名無しさん
09/12/11 21:32:10
>>464
for /f "skip=6 delims=" %%i in ('dir /b/o-d data*.dat') do del %%i
これで新しいものから順に6個を除いたファイルは全部消える
467:デフォルトの名無しさん
09/12/11 21:33:20
>>465
ありがとうございました
助かりました
468:デフォルトの名無しさん
09/12/12 11:52:30
カレントディレクトリを取得するのに
for %i in (.) do set cdir=%~dpnxi
とかやってるんですが、もっとスマートな方法はないですしょうか?
469:デフォルトの名無しさん
09/12/12 12:04:19
%CD%とかじゃ駄目だっけ?
470:デフォルトの名無しさん
09/12/12 15:46:31
フルパスをゲットするなら%cd%でいい
c:\a\b\c\d\thisdir
のthisdirをゲットするなら
%cd:\=&set cdir=%
echo %cdir%
とか。
471:デフォルトの名無しさん
09/12/12 19:32:42
set cdir=.
472:デフォルトの名無しさん
09/12/13 03:10:06
set cdir=.
echo %cdir%
.
ダメじゃんw
473:デフォルトの名無しさん
09/12/13 19:05:35
set cdir=%cd%
echo %cdir%
474:デフォルトの名無しさん
09/12/14 11:07:38
%CD%なんてあったんですね。ありがとうございます。
カレントディレクトリがセットされた環境変数は ありそうだと思って
set<enter>して探したのですが、これにはでないみたいです。
「特殊な環境変数」でググると%CD%以外にもいろいろ知ることができました。
475:デフォルトの名無しさん
09/12/14 14:11:28
set/?
476:デフォルトの名無しさん
09/12/14 14:14:37
カレントディレクトリはドライブごとにある
echo %=c:%
echo %=d:%
477:デフォルトの名無しさん
09/12/14 14:16:28
>>476
知らなかった・・・
478:デフォルトの名無しさん
09/12/14 14:37:09
set,
で=*環境変数も表示
479:デフォルトの名無しさん
09/12/14 14:40:28
2009年も終わろうとしてるのに今更cmdのtipsなんて何の意味がある。
PowerShellに乗り換えようぜ。
480:デフォルトの名無しさん
09/12/14 15:50:56
=::=::\
は何?
481:デフォルトの名無しさん
09/12/14 22:25:59
>>479
PowerShellがNTに載ったらね
482:デフォルトの名無しさん
09/12/15 14:51:01
おまえらスレチガイ
スレリンク(win板)
483:デフォルトの名無しさん
09/12/21 15:23:45
ipアドレスの3ブロック目で判断して、
レジストリを修正するバッチファイルが作りたいのです。
ipconfigしても情報が多すぎるし、
ドット2つの後ってどうしたらいいんでしょう…。
どなたかご教授願います。
484:デフォルトの名無しさん
09/12/21 15:26:03
for /f "delims=. tokens=3" %I in ("1.2.3.4") do echo %I
485:sage
09/12/21 16:36:18
>>484
素晴らしすぎます!!!
というか私の知識不足…頑張り不足…でしょうか。
ありがとうございました!
486:483
09/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:デフォルトの名無しさん
09/12/21 22:05:22
tokens=14 ってなんじゃそら。
skip=n でn行飛ばせるって知ってるよな?
488:デフォルトの名無しさん
09/12/21 22:55:04
出たか、知ったかぶり。お手並み拝見
489:デフォルトの名無しさん
09/12/22 13:14:33
横からだけど俺的にはアリだな。
tokens=14 を数える事は二度と無いとしても、将来コピペで使い回した時、
このスレでのやりとりを良い思い出として生暖かく思い出せるw
"tokens=2 delims=:" だったら何も心に響かない。
490:デフォルトの名無しさん
09/12/22 17:32:15
OSにもれなくついてくるおまけの機能に多くを求めてはいけない。
メモ帳やペイントに不満を感じるなら勝手に別のアプリをお使いくださいというのがMSの基本姿勢。
不便だろうが欠陥があろうが知ったことではない。
491:デフォルトの名無しさん
09/12/22 17:47:03
delimsを.だけにすれば1行で書けるだろ?
for /f "tokens=?? delims=." %%I in ('ipconfig ^| find "IP Address"') do echo %%I
??は自分で数えろ
492:デフォルトの名無しさん
09/12/22 18:26:46
skipがどうしたって?
493:デフォルトの名無しさん
09/12/22 18:45:11
どんぐりの背比べ
494:483
09/12/22 18:47:08
>>491
ありがとうございました。
for /f "tokens=15 delims=." %%I in ('ipconfig ^| find "IP Address"') do echo %%I
でバッチリ取得出来ました。
これが一番スマートですね。助かりました!
495:デフォルトの名無しさん
09/12/22 18:53:36
バッチごときでスマートって
しまむらで洋服買って自慢してるようなもんか
496:デフォルトの名無しさん
09/12/22 20:09:54
すっぱい葡萄
497:デフォルトの名無しさん
09/12/22 20:45:16
たぶん
for /f "tokens=15 delims=." %%I in ('ipconfig') do echo %%I
でもいける
498:デフォルトの名無しさん
09/12/22 20:53:10
どんぐりの背比べ
499:デフォルトの名無しさん
09/12/22 21:55:38
すっぱい葡萄
500:デフォルトの名無しさん
09/12/23 14:33:10
skipがどうしたって?
501:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/12/26 12:12:03
そこまで人の手でやれよ。
504:デフォルトの名無しさん
09/12/26 12:17:13
写真を分類するソフトなら腐るほどある。
505:デフォルトの名無しさん
09/12/26 12:57:24
ゴミの山(Dドライブ)を見てたらすんごいもの見つけたww
URLリンク(codepad.org)
なんかかなり昔作ったVB風の記述でバッチファイルを吐く言語の
ソースファイルっぽいw
今コンパイラ探してる
506:デフォルトの名無しさん
09/12/26 13:04:17
#EXPAND BatchBasic
Sub Main()
Print("Hello World.")
End Sub
Sub Print(str)
#NATIVE ECHO %str%
End Sub
507:デフォルトの名無しさん
09/12/26 13:06:23
>>501
できるけど、その程度の代物だったら手作業と大して変わらん手間だろ。
508:デフォルトの名無しさん
09/12/26 14:48:26
>>505
batに生産性を求めてどうする
509:デフォルトの名無しさん
09/12/26 20:27:40
>>508
生産性がよくなるんだろ?
510:デフォルトの名無しさん
09/12/26 22:38:09
管理者として実行されてるか?を判定するには?
511:デフォルトの名無しさん
09/12/27 10:14:31
管理者権限でしかアクセスできないフォルダにアクセスしてERRORLEVELで調べる
512:デフォルトの名無しさん
09/12/27 12:08:47
環境変数比較してみたら管理者権限の場合SESSIONNAMEが定義されてなかったので
それで判別できる? (Vista x64で確認)
513:デフォルトの名無しさん
09/12/27 12:27:56
runas /trustlevel:制限しない rundll32 >nul
echo %errorlevel%
ちゃんと動くかは分からない
514:デフォルトの名無しさん
09/12/27 14:35:24
echo>file
dir/q file
515:デフォルトの名無しさん
09/12/27 15:01:58
mklink a a
echo %errorlevel%
516:デフォルトの名無しさん
09/12/27 16:00:42
net user %username% |findstr "*administrators"
MS謹製のwhoamiに権限表示があった気がする
517:デフォルトの名無しさん
09/12/27 17:58:10
>>516
UACの昇格
518:デフォルトの名無しさん
09/12/27 22:26:55
>>512
Vista 32bit x86でも確認したよー
519:デフォルトの名無しさん
09/12/31 18:56:58
rundll32 shell32,IsUserAnAdmin
520:デフォルトの名無しさん
10/01/04 17:02:50
バッチファイルの引数をプラス記号で繋ぐにはどうしたら良いでしょう。例えば、
start "" iexplore "URLリンク(www.google.com)"
ここの %* を、引数の数に合わせて %1+%2+.... とやる方法です。
521:デフォルトの名無しさん
10/01/04 20:39:55
URLリンク(codepad.org)
エスケープには対応してないから使えるのは英字だけなのでよろしく
522:デフォルトの名無しさん
10/01/04 20:42:43
もっとうまい方法がある気がしてならないのでちょっと晒してみる。
----------ここから
set Param=%1
:loop
if not "%2"=="" set Param=%Param%+%2
shift
if not "%2"=="" goto loop
start "" iexplore "URLリンク(www.google.com)"
----------ここまで
細かい事考えなければこんな感じ?
引数を繋ぐスマートな方法を知りたいです。。。
523:デフォルトの名無しさん
10/01/04 20:44:47
つか誰かHttpEscapeってサブルーチンでも作って
524:522
10/01/04 20:48:01
>>521
そっか、先に shift させた方がずっと美しいや。
参考になりましたです。
525:521
10/01/04 21:06:29
いや、スマートにするのは簡単だけど、
URLリンク(codepad.org)
なんかつまんないなあ。^^;
526:522
10/01/04 21:15:25
>>525
これこれ、こーゆーの求めてました!
ありがとうございました >>521 、きっかけをくれた >>520 にも感謝。
527:520
10/01/05 00:22:01
>>521, 522
お二人ともありがとうございました。
特に >>525 が素晴しく、大変勉強になりました!!
528:デフォルトの名無しさん
10/01/05 01:05:21
そもそもぐぐるなら置換不要
529:デフォルトの名無しさん
10/01/06 18:02:19
そうなの?
530:デフォルトの名無しさん
10/01/10 19:19:39
質問なんですが、
例としてimg001、img002、img003というファイルがあったとして
imgに当てはまるものを一気に削除するというスクリプトはあるでしょうか?
531:デフォルトの名無しさん
10/01/10 19:36:16
delete img*
532:デフォルトの名無しさん
10/01/10 19:47:41
>>531
erase img*
533:デフォルトの名無しさん
10/01/10 20:56:26
>>531-532
「imgに当てはまるもの」→ del img
534:530
10/01/11 01:04:30
>>531-533
ありがとうございます。
delの場合は del img*でいけました。
535:デフォルトの名無しさん
10/01/11 01:16:52
>>531-533
おまえら質問に答えてない
>>530
だれかが作ればある
536:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/12 18:41:21
for /f %%i in ('where %1') do start "" explorer.exe /select,%%i
540:536
10/01/13 00:43:51
>>538, 539
どちらもすごいです!! たいへん勉強になりました。
541:デフォルトの名無しさん
10/01/13 10:54:58
>>539
これのうち、 'where %1' の部分が良く理解できません。
解説のあるウェブサイトを紹介してもらえないでしょうか。
542:デフォルトの名無しさん
10/01/13 13:14:07
URLリンク(www.atmarkit.co.jp)
543:デフォルトの名無しさん
10/01/13 23:29:11
>>542
やっと理解しました。where は OS のコマンドで、
また for /f in %%変数 (...) の括弧内ではコマンドが使えるのですね。
情報ありがとうございました。
544:デフォルトの名無しさん
10/01/14 23:23:03
%1 %2 ... は%*
%2 ... をまとめて取り出せないかな
バラして組み立てるしかないかな
545:デフォルトの名無しさん
10/01/14 23:26:37
shiftすりゃいいんじゃねーの
546:デフォルトの名無しさん
10/01/15 02:34:52
shift
echo %*
547:デフォルトの名無しさん
10/01/15 07:02:48
これだと %1 も出てくるな…
548:デフォルトの名無しさん
10/01/15 09:28:36
shift /2
549:デフォルトの名無しさん
10/01/15 13:11:40
for /f "tokens=1*"でとれるんじゃねーの
550:デフォルトの名無しさん
10/01/15 13:48:41
shiftじゃできないんじゃねーの
551:デフォルトの名無しさん
10/01/15 19:42:14
for /f "tokens=1*"じゃできないんじゃねーの
552:デフォルトの名無しさん
10/01/15 20:31:47
for /f "tokens=1*" %%i in (%*) do echo %j
553:デフォルトの名無しさん
10/01/15 21:44:02
for /f "tokens=1*" %%i in ("%*") do echo %j
だろ
554:デフォルトの名無しさん
10/01/16 11:29:18
この言語はforの使い方がおかしい
555:デフォルトの名無しさん
10/01/16 15:33:31
ワイルドカードを展開するコマンドにforという名前をつけてしまったのがそもそもの間違い。
556:デフォルトの名無しさん
10/01/16 16:13:29
for /f "tokens=1*" %i in ("1 2 3 4") do echo %j
2 3 4
ほれ
557:デフォルトの名無しさん
10/01/16 17:16:36
for /f "tokens=1*" %i in (""1 2" "3 4"") do echo %j
2" "3 4"
ほれ
558:デフォルトの名無しさん
10/01/18 15:10:32
set a=%*
echo !a:%1=!
559:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/19 11:39:09
ランダムの意味わかってないだろ
561:559
10/01/19 11:52:46
1~3までの数字をアットランダムに付けたいのですが・・。
Default1.dfgというファイル名での保存が、複数回続いても構いません。
(きっちり、1→2→3という順番で、バッチ処理する度にファイル名が変わってくれなくて構わないです)
562:デフォルトの名無しさん
10/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
10/01/19 15:29:47
>>562
ありがとうございます!
コピー先は直しましたが、まさに目的は叶いました。
本当、感謝です!
564:デフォルトの名無しさん
10/01/19 18:15:40
>>560
>>560
565:デフォルトの名無しさん
10/01/19 19:39:38
>>564
566:デフォルトの名無しさん
10/01/20 13:48:59
サイクリック版作りたかったら作ってみ
567:デフォルトの名無しさん
10/01/23 03:00:27
>>560
>>559の例の場合は3本のくじからの無作為抽出ってことだろ?
ランダムって表現で間違っちゃいない
っつーか、>>562が物語ってるじゃん↓
> set /a random=%random%%%3+1
568:デフォルトの名無しさん
10/01/23 21:44:08
>>567
560は562が書かれる前にレスの内容がわかるエスパーなんですね。
569:デフォルトの名無しさん
10/01/24 05:15:14
別に560の前の時点で、環境変数(%random%)を使えば良いのは判る訳で
そこへ560の質問の意味が解からん
570:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/24 12:44:52
iTunesとiPodの場合「ランダム」ではなく「シャッフル」と呼び、
その呼び名の通り曲順をシャッフルして再生する機能になります。
1曲ごとに再生する曲を対象全体からランダムに選ぶのではなく、
最初に対象全体をシャッフルして混ざったリストを作りそれを順番に再生する、
つまりトランプをシャッフルしてから一枚づつめくっていく様な感じになり、
あなたの希望の様に
「一度流した曲は、再生リスト内の曲を全て再生するまでは再生しない。」
と言う状態になります。
iTunes上でプレイリストを選択した状態で左下のシャッフルボタンを
押してみると、リスト内でシャッフルしてそれを順に再生している事が
よく分かると思います。
(その際画面表示のソート順を通常なら左端にある曲順の数字欄に
しておかないとシャッフルされる様子が見れません。曲の上部に
「名前」や「アーティスト」、「アルバム」等と書いてある左端の部分を
クリックして三角が出ている状態です。その灰色のバー部分の
どこをどうクリックするかで画面上の並び順が変わります。)
この様に「シャッフルされたリストを作る」と言う機能なので、そのリスト内で
曲を前や後ろに飛ばしてもまた同じ部分では同じ順番で再生されます。
シャッフル機能を切って入れ直すか、最初の曲から前に飛ばしたり、
最後の曲を終わりまで再生したりすればシャッフルし直されます。
自分は普段まずシャッフル再生はしないので、今ちょっと試してみた
結果を見て回答したので、何か間違いがあるかもしれません。
572:デフォルトの名無しさん
10/01/24 12:45:56
回答ありがとうございます。
iTunesと同じなのであれば、
「再生回数」という項目もあるから、これでも確認できますね。
全部再生回数が0回の状態で再生し、
しばらくしてから再生回数を見て、飛びぬけて再生回数が少ない・多いものが無いことを確認する。
iTunesではメニューの方の「シャッフル」をよく利用します。
(下にシャッフルボタンがあるのは知らなかった…)
確かにこれは「リピートする」にチェックを入れておかないと、一巡したところで終了するので私の望んでいるタイプです。
まぁ重要なのは本当にiTunesとiPodの再生方式が同じなのか、というところですが、
同じじゃない方が不自然ですよね。
ありがとうございました。
573:デフォルトの名無しさん
10/01/24 12:47:04
iPodはiTunesを持ち歩く為に作られたものですから、基本はiTunesと同じだと思っていいと思いますよ。
コンピュータでのランダムは疑似乱数関数を利用しているのが一般的です。
疑似と頭に付くように実は完全なランダムではありません。与えるパラメーターが同じなら結果は全く同じになります。
実際の利用では、パラメーターに現在の時刻を1/100秒単位で指定します。
毎回再生ボタンをコンマ何秒の単位で全く同じく押すなんて事不可能ですから、同じ順番になることはなくランダムだと言って差し支えないでしょう。
> 同じ曲ばかりを繰り返します。
一般的にプログラム上では、順番は疑似乱数でランダムに決め、更に同じ曲が出ないようにする工夫もなされています。
実際にはランダムだけど、同じようなのを繰り返したり、次のが予想した通りだと思えるのは人間の特性が関係しています。
聞き流している時には好きな曲は印象が強く残りますが、そうではない曲は聴いても記憶に残りにくいものです。
ランダム再生していると、好きな曲ばかりが印象強く残って、前にも聴いたなとか、同じのばかりかかっているなと勘違いしてしまいます。
実際に聴いて確かめるのではなく、ランダム再生時の曲名を順番に書き出してみるとわかります。
聞き流していると錯覚してしまうし、時間もかかりますからね。
> A,C,E,A,C,E,...のように、同じ曲ばかりを繰り返します
そういうプログラムがされている可能性も否定はできませんが、錯覚である可能性もあります。
574:デフォルトの名無しさん
10/01/24 12:48:00
回答ありがとうございます。
>> 同じ曲ばかりを繰り返します。
>一般的にプログラム上では、順番は疑似乱数でランダムに決め、更に同じ曲が出ないようにする工夫もなされています。
基本的にどのメーカーでも、ランダム再生のロジックは同じはずだ、という意味でしょうか。
そうだと良いのですが。
自分もほんの少しだけプログラミングには触ったことがあるので、
完全なランダム再生は難しくないのになんでこのMP3プレイヤーはこうなんだ!とか一人で憤慨しています。
>> A,C,E,A,C,E,...のように、同じ曲ばかりを繰り返します
>そういうプログラムがされている可能性も否定はできませんが、錯覚である可能性もあります。
確かめたわけじゃないので、確かに錯覚の可能性もあります。
それなのに言い張ったところで説得力は無いのですが、
「また同じ曲だ」「これはさっき聞いたばっかりだ」とか、曲単位で耳に残るのではなく、
曲Aがフェードアウトした後に始まるイントロは曲Cだ、という「つながり」が耳に残るんですよ。
そこから「いくつかの同じ曲を同じ順番で再生している」と思っています。
あくまで「思っている」です。
本題?のiPod購入は、前向きになっています。
575:デフォルトの名無しさん
10/01/24 12:49:04
>>569
俺は>>560が書かれてた時点でスレ見てスルーして次見たのが今だけど、
560の時点じゃ同感だったよ。ちゃんと読んでればいずれかと書いてるから
言葉の使い方間違ってるわけではないとわかるけれど。
流し読みすると 1→2→3 と要求してるように見えて
ランダムって違うんじゃね?と思ったわな。
560=562だったとしても何も驚かんけどな。
576:デフォルトの名無しさん
10/01/24 12:50:06
>・一度流した曲は、再生リスト内の曲を全て再生するまでは再生しない。
自分の経験上ではそうなっていると思います。
もちろん、電源が完全にオフになるとどこまで再生していたかはリセットされますが、少なくとも連続して聞いている時に同じリスト内の曲が再度かかることはないですね。
iTunesで曲を追加したり並び順を替えてもiPod側の再生順は変わりますし、1度PCに接続すると同じプレイリストを先頭から再生しても順番が変わっているように思います。
ただし、iPodやiTunesの「ランダム」というのは「万遍なく」という意味ではなく「目茶苦茶」という意味ですので、同じアーチストの曲が連続したりすることもあれば、プレイリスト内の次の曲がそのまま再生されたりもします。文字通り「目茶苦茶」です。
577:デフォルトの名無しさん
10/01/24 16:39:24
ランダムフェチ?
578:デフォルトの名無しさん
10/01/24 19:16:09
トラウマ?
579:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/25 20:48:04
一時ファイル使わんとでけんのか?
584:デフォルトの名無しさん
10/01/25 21:22:56
>>581
%%~nxI ?%%I
とすればいいよ
もし<tab>が入力できれば
%%~nxI<tab>%%I
delims=<tab>
でもいいが難度が高いかな?
585:デフォルトの名無しさん
10/01/25 22:12:16
>>584
?????
586:デフォルトの名無しさん
10/01/25 23:12:59
sort順だろ
%%~nxI?%%I
だと数字が?より前になる
%%~nxI ?%%I
なら数字が より後ろになる
587:デフォルトの名無しさん
10/01/26 00:51:04
そこまで考えてなかった
588:デフォルトの名無しさん
10/01/26 02:28:17
ぶっ
589:デフォルトの名無しさん
10/01/26 12:25:06
>>586
sortコマンドの並び替えはascii順じゃないので数字より前に?が来る。
タブもNG。ソート順ではスペースが前に来るんで、スペース入りのファイル名があると
おかしくなる。
多分sortでファイル名に出来ない文字で一番若いのは(0f)
区切り文字をこれにしたらとりあえずokみたい。
590:デフォルトの名無しさん
10/01/26 12:28:24
書き込んだら文字消えたorz
コマンドプロンプト上ではアスタリスクみたいに見える文字(外字?)
591:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/26 19:53:21
どっちもメモ帳で入力できない
593:デフォルトの名無しさん
10/01/26 20:41:27
コマンドプロンプト上からecho ^A>>hoge.bat とか。
^AはCtrl+A
594:デフォルトの名無しさん
10/01/26 22:06:24
メモ帳で入力できるものを使えば?
595:デフォルトの名無しさん
10/01/29 18:36:32
ショートカット作ってアイコン変えると窓のアイコンが変わってくれるけど
バッチファイル中から自力でアイコン変える方法ってないですか?
フリーウェア等の外部ツールでもいいんですが。
596:デフォルトの名無しさん
10/01/31 22:42:41
ある
597:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/31 22:57:12
あほ
599:デフォルトの名無しさん
10/01/31 23:10:23
>>597
無理して日本語を使わなくてもいいですよ。
BATでおk
600:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/31 23:58:51
callした先で書き換えちゃってるんだろ
call先でsetlocal ~ endlocalしとけ
602:デフォルトの名無しさん
10/02/01 00:00:36
追記
call先のファイルをいじれないんだったらcallの呼び出しをsetlocal~endlocalで囲む
603:デフォルトの名無しさん
10/02/01 00:03:46
そうかcallの前後をsetlocal ~ endlocalしとけ
604:デフォルトの名無しさん
10/02/01 00:24:56
>>601
Danke.
605:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/01 11:12:49
%INPUTPATH%
が \ で終わっていないに 1000ガバス。
とりあえず
IF EXIST "%INPUTPATH%\work.tmp" goto tmpdel
じゃないか?
607:デフォルトの名無しさん
10/02/01 11:22:30
606で終わってるけど質問する前に
echo onするなり
echo IF EXIST %INPUTPATH%work.tmp goto tmpdelするなりして
何をチェックしようとしてるのか確認しろ
608:デフォルトの名無しさん
10/02/01 14:25:44
>>606
いや、\は付いてる
609:デフォルトの名無しさん
10/02/01 14:59:02
>>598
610:デフォルトの名無しさん
10/02/01 16:29:43
>>608
work.tmp が wark.tmp とか work,tmp なのが原因でファイルが存在しないに 1200カパズ。
for の中で遅延展開してない、に 1500ガバス。
そもそも 607 のアドバイスのように echo の結果はどうなのよ?
まさか、表示が流れて読めません、とかいう訳じゃないんでしょ?
611:デフォルトの名無しさん
10/02/01 16:46:46
ここに書いた例と実際のバッチが全く別物とか。
612:デフォルトの名無しさん
10/02/01 17:32:55
>>610
echoの結果も同じ。
なんでだろ?
613:デフォルトの名無しさん
10/02/01 18:08:04
同じって言葉じゃなくて具体例を出せよw
実際に使ってる内容晒したらエラー出て当たり前って内容かもしれないだろ。
おまえさんがその当たり前に気付いてないだけで。
614:デフォルトの名無しさん
10/02/01 19:52:01
そもそもバッチファイル理解できてる?
よければ問題が起こる最小限のコード全体を貼ってくれ
615:デフォルトの名無しさん
10/02/01 21:30:59
delするのに存在確認は不要だろあほか
616:デフォルトの名無しさん
10/02/01 22:11:39
カレントディレクトリから一つ下のサブディレクトリ名を取得する。
それを引数としてあるバッチに渡す。
以上を一つ下のサブディレクトリ全てについて実行するバッチって作れますか?
WSHの方が良いですか?
617:デフォルトの名無しさん
10/02/01 22:41:36
>>613
試しに
ECHO "%INPUTPATH%hogehoge.txt"
としたら
C:\hogehoge.txt
と¥付きで表示される。
618:デフォルトの名無しさん
10/02/01 23:51:27
ありぃ?
分かった。
直前で作ったファイルが書ききれていなかったっぽい。
TIMEOUT1秒入れたらEXISTで見えるようになった。
619:デフォルトの名無しさん
10/02/02 01:13:03
>>616
for /d %%I in (*) do (
echo call exec.bat %%I
)
620:デフォルトの名無しさん
10/02/02 01:33:15
>>619
すげぇ!こういとも簡単にできるとは…。
ありがとうございます。
621:デフォルトの名無しさん
10/02/02 01:44:36
すまん。最後にもう一つだけ教えてください。
SET INPUT=%~dpnx1
ECHO %INPUT%
pause
これだけのバッチファイルを作って、このファイルに適当なファイルをD&Dしたら
ファイルネームがフルパスで表示されると思う。
でも、どこでもいいから適当なフォルダに長江 6380.txtってファイルを作って
さっきのバッチファイルにD&Dしてみてくれ。
長江で切れてしまうと思う。
これを回避するにはどうしたらいい?
622:デフォルトの名無しさん
10/02/02 02:06:53
切れてないよ
623:デフォルトの名無しさん
10/02/02 03:22:16
長江は長過ぎる 黄河にしとけ
624:デフォルトの名無しさん
10/02/02 08:41:12
>>622
嘘お?
PC3台とも切れるんだが?
ちなみにスペースは全角な。
>>623
さぶぅ
625:デフォルトの名無しさん
10/02/02 10:37:47
バッチファイルは全角半角スペース混じりのファイル名を正しく扱える(必要な時にちゃんと""で囲めば)。
そのコードで問題が出るなら明らかに呼び出し側の問題。
626:デフォルトの名無しさん
10/02/02 12:24:52
>>625
試しにecho "%INPUT%"
をしても同じ
627:デフォルトの名無しさん
10/02/02 12:32:11
>>621
普通なら切れない。
切れるとしたらbatファイルの関連付けでドロップハンドラが壊れているんだろう。
628:デフォルトの名無しさん
10/02/02 15:12:55
こういう話だろ
URLリンク(scripting.cocolog-nifty.com)
629:デフォルトの名無しさん
10/02/02 15:59:28
>>627
pgr
630:デフォルトの名無しさん
10/02/02 16:36:56
>>621
半角で例示したりして芸の細かいこと
631:デフォルトの名無しさん
10/02/02 19:55:37
バッチファイルにD&Dなんてするなよ
素直にコマンドプロンプトで打てばいいじゃん
632:デフォルトの名無しさん
10/02/02 21:10:28
どこでもいいから適当なフォルダに長江&shutdown 6380.txtってファイルを作って
さっきのバッチファイルにD&Dしてみてくれ。
633:デフォルトの名無しさん
10/02/02 23:39:00
>>628
ありがと。
>>631
長いバッチで自動化したいから無理なのら。
>>632
さぶぅ。
雪降らせたのお前か。
634:デフォルトの名無しさん
10/02/03 02:14:36
バッチファイルにD&Dするかぎり無理なのら。
635:デフォルトの名無しさん
10/02/03 02:42:21
ドロップハンドラ作ればええのら。
636:デフォルトの名無しさん
10/02/03 14:35:34
Drop on Scriptのドロップハンドラは?
637:デフォルトの名無しさん
10/02/05 14:35:40
累乗計算バッチだるす。
638:デフォルトの名無しさん
10/02/05 21:19:53
2の3乗
3の3乗
639:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/07 15:23:12
ワイルドカードはファイル名を保持してない
641:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/07 19:44:18
>640-643
みなさん、ありがとうございます!
試してみましたところ、ばっちり動作しました。
ただ、ばっちり動作しますがプログラムの挙動を自身がまだ理解できてない状態なので
これらを元に色々調べてプログラムを練ってみたいと思います。
645:デフォルトの名無しさん
10/02/10 00:23:41
5スレ目でいうのもなんか変だが、
コマンド シェルの概要
URLリンク(technet.microsoft.com)(WS.10).aspx
Windowsヘルプにもあるし、OSごとにリンク先違うけど、ここらへんがテンプレにあっても良くないか?
コマンド ライン リファレンス
URLリンク(technet.microsoft.com)(WS.10).aspx
バッチ ファイルを使用する
URLリンク(technet.microsoft.com)(WS.10).aspx
こっちは、上からリンクあるからイランと思うけど。
646:デフォルトの名無しさん
10/02/10 00:24:35
コマンド シェルの概要
URLリンク(technet.microsoft.com)
アチャー
647:デフォルトの名無しさん
10/02/10 00:25:38
orz
648:デフォルトの名無しさん
10/02/10 09:53:38
自分の使ってるOSのヘルプならいつでも見れるはずだが、
ヘルプすら読まずに質問するやつが多すぎるという嫌味?
649:デフォルトの名無しさん
10/02/10 13:59:37
>>646
Runasなんてあったのかー
650:デフォルトの名無しさん
10/02/10 15:52:52
MSのヘルプは探すのが面倒
651:デフォルトの名無しさん
10/02/10 16:15:51
ヘルプより掲示板で聞いた方が早いし楽
652:デフォルトの名無しさん
10/02/12 01:00:53
WindowsXPのコンソールで、
unixでいうところのsmbclientを使うには、
どのようにしたらよいでしょう?
smbはもともとWindowsのプロトコルで、GUIに統合されているため、
smbclientのコマンドラインプログラムというのがあるのかないのか、
よくわからないのですが、
パスワードつきの他のマシンに起動時に自動接続するのに、
ネットワークドライブに割り当てただけではだめだったので、
それならコンソールでコマンドを実行して接続するか、と考えました。
ご存じでしたらアドバイスをお願いします。
653:デフォルトの名無しさん
10/02/12 01:04:43
net
654:デフォルトの名無しさん
10/02/12 01:21:50
>>653
thanks
655:デフォルトの名無しさん
10/02/14 03:13:43
MSのヘルプは詳しいのと詳しくないのと差があるからな
makecabとかまったくわからんしfsutilとか独自すぎて笑える
cmdのヘルプもわかりにくい部類になるだろう
書いてあるのかないのかよくわからんことも多いし
掲示板のほうが楽しいとかはさすがにあれだがw
656:デフォルトの名無しさん
10/02/14 21:54:55
あのさあ...
objShell.Run "コマンド1 | コマンド2 | sort"
とかをスクリプトでするとしましょう。
そのとき、途中のコマンドが
.vbs とか .wsf の//job:XXX として、
そのなかに Wscript.Sleep 100 があるとパイプラインが詰まる?
ことないですか?
657:デフォルトの名無しさん
10/02/14 22:37:57
それ詰まるもなにもパイプラインにならんだろ?
658:デフォルトの名無しさん
10/02/14 22:48:45
えー...。 ごめーん
コマンド1 とかは
Cscript //nologo XXX.vbs で、
XXX.vbs や YYY.wsf //job:ZZZ 内部では
Wscript.Echo とか Wscript.StdOut.WriteLine 使用
ではどうだろう。
あげたれ
659:デフォルトの名無しさん
10/02/14 23:07:30
コマンド1がパイプラインの機能を持ってるのか?という話だが?
cmd /cならパイプラインの機能を持ってるが?
660:デフォルトの名無しさん
10/02/14 23:29:58
あああ、そのとおり
objShell.Run "cmd.exe /c " & "コマンド1 | " & ...
でした。
で、コマンド1にWscript.Sleep 100 があるとコマンド1で止まっちゃうような。
気がするのです
661:デフォルトの名無しさん
10/02/15 00:09:24
ないです
662:デフォルトの名無しさん
10/02/15 21:36:31
ないですね。はてな
663:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/16 14:29:10
>>663
こんな感じかな?
× set FOLDER=%1
○ call set FOLDER=%%%1%%
665:デフォルトの名無しさん
10/02/16 18:01:21
>>664
できました。ありがとうございました。
666:デフォルトの名無しさん
10/02/27 11:20:25
質問させてください。
パソコンちょっと詳しいからということで、会社の
ネットワーク管理者にされてしまいました。
運の悪いことに、次年度からパソコンの更新が行われ、
Windows XP→Windows 7にOSも変更になりました。
前任の人がWindows XP環境でログインしたときに、
仕事でよく使うフォルダへのショートカットを
ログイン時のバッチファイルで表示させていたのですが、
Windows 7では動作しないみたいなのですorz
Windows 7でバッチファイルでファイルのショートカットを
デスクトップに表示させるにはどうしたらいいでしょうか?
いろいろググッてみましたが、それ用のフリーソフトが
あるみたいなのですが、Windows 7では動きそうにないんです...
667:デフォルトの名無しさん
10/02/27 13:05:03
スレリンク(win板)
管理者スレ
668:デフォルトの名無しさん
10/02/27 13:08:37
回答させてください
>ログイン時のバッチファイルで表示させていたのですが、
>Windows 7では動作しないみたいなのですorz
動作するかしないかはっきりさせろ!
実行してみりゃどういうエラーが出てるかわかるだろ?
669:デフォルトの名無しさん
10/02/27 13:23:23
>>668
前任の人の設定のままでXPのマシンをログインすると
ちゃんとショートカットでるのですが、7だと、
エラーメッセージも出ず、スルー状態なんです。
(つまり何もおきない)
他のソフトインストールして試して見ます。
このスレの人で、ショートカット表示
させるコマンドライン知っている人い
ましたら、ご教示ください。
おながいしまつ。
670:デフォルトの名無しさん
10/02/27 14:29:35
ドメインへのログオンスクリプトならポリシーの適用してない/できてないとか。
そもそもhomeでドメインに参加できないとか。
ショートカット表示の意味がわからない。
エクスプローラ上で表示させる事なのか、リモート資源の接続先をポップアップさせる事なのか。
とにかく5W1Hで明確に書いてくれないと全くわかんね。
671:デフォルトの名無しさん
10/02/27 15:20:16
>>670 多分668さんも同一人物
とても親切にしていただいてありがとうございます。
前の設定者はドメインに参加する時点で、windows 2003 server
のActive Direcrory処理の際に、ログオンするときのバッチファイルに
デスクトップにショートカットを表示させるようにしてたみたいです。
というのも、管理者以外はディレクトリ構造も知らないので、
それを全員に分からせてセキュリティレベルを下げるより、
自動的にショートカットを表示してクリックさせるという形に
したようです。確かにパスを追っていけばそのファイルに到達しますが、
わざとそうさせないみたいです。(その方針には私も賛成します)
長文すみません。
672:デフォルトの名無しさん
10/02/27 15:22:13
で、デスクトップへ通常使うけど、
パスを探られたくないフォルダへの
ショートカットを入れたいということです。
パソコンしかさわったことないので、
こういう具体的かつ実践的なご指摘はとても
勉強になります。ありがとうございます。
673:デフォルトの名無しさん
10/02/27 17:01:32
ポリシー設定のなかにもデスクトップの表示に関する項目があった気がする
このスレ的にはログオンスクリプトの中でNET USEで接続しているんだろうな位・・・もしかするとSUBST?
674:デフォルトの名無しさん
10/02/27 17:24:57
ありがとうございます。
明日は日曜ですが、隠れ出社して試してみます。
675:デフォルトの名無しさん
10/02/27 19:12:15
バッチからショートカットを作るのはむずかしかろ
インターネットショートカットならかんたん
(
echo;[InternetShortcut]
echo;URL=\\server\sharename\folder
) > desktop\hoge.url
676:デフォルトの名無しさん
10/02/27 19:34:54
どういう風に作ってたかしらんけど、フォルダ構造が変わったからじゃないの?
大抵は新しいパスへリダイレクトしてくれるけど、AllUsers→Publicの部分はうまくいかない模様
XP以前:C:\Documents and Settings\All Users\Desktop
Vista以降:C:\Users\Public\Desktop
677:デフォルトの名無しさん
10/02/27 20:15:31
>>676
さすがに会社のサーバ?でユーサフォルダ以降のフォルダ使わないだろw
まさか、な・・・?
678:デフォルトの名無しさん
10/02/28 00:15:40
>>675-677
ヒントありがとうございます。
まさかもありえるのでちょっとやってみます。
679:デフォルトの名無しさん
10/02/28 05:55:24
規模にもよるけど引継ぎ書とか運用手順書とか必要でしょ。
次の人に渡すにしても。
前任者に要求しとかないとまずいね。
680:デフォルトの名無しさん
10/02/28 12:55:36
「ログオンするときのバッチファイル」を、クライアントのWindows7マシン上にコピーして
コマンドラインから実行してみたらエラー内容が分かるんじゃない?
681:デフォルトの名無しさん
10/02/28 18:47:20
みなさんありがとうございます。
バッチファイルが別のバッチファイル呼び出すような
入れ子構造になっていることが判明し、解析に手間取ってます
というか、そもそもDOSのコマンド知らないorz
一から調べていますので少々時間くださいまし。
682:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/03 22:56:17
cmdでlinuxの mkfifo hoge 的なことってできますか?
684:デフォルトの名無しさん
10/03/04 00:20:27
普通のファイルで1 writer n readerができるが?
685:デフォルトの名無しさん
10/03/04 21:13:13
CreateNamedPipe()で作れば?
686:デフォルトの名無しさん
10/03/07 19:34:58
Jドライブの直下のlhacaフォルダの下にLhaca.exeという圧縮ファイルがあります
それをつかってJドライブ直下にあるaaaフォルダを圧縮してデスクトップに出力させたいのですが
どうもうまくいきません
どこが悪いかを教えてください
cd J:\lhaca
Lhaca.exe temp.zip J:\aaa
687:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/07 23:28:57
有り難うございます
既にカレントドライブはJになっています。
Lhacaは普通に手で実行すると普通に開くのですが
Dosコマンドで開こうとするとどうしてもエラーになります
689:デフォルトの名無しさん
10/03/08 00:10:36
>>688
詳しいエラー教えて
690:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/08 03:44:39
文字を入力させて、その文字でファイル名を判断して該当のフォルダに移動するバッチプログラムは需要ある?
別の言語では時々見るんだけどコマンドプロンプトでやってるの見たことないからさ
URLリンク(blog-imgs-42.fc2.com)
693:デフォルトの名無しさん
10/03/08 03:57:06
>>691
圧縮形式や作成先はLhaca自体の設定(レジストリ)に依存するようだよ
Lhacaはコマンドラインで使わないほうがいいな
694:693
10/03/08 04:00:46
と思ったらレジストリじゃなくて
"C:\Windows\Lhaca.ini"
なんてのが勝手に作成されてた
行儀が悪すぎる!
695:デフォルトの名無しさん
10/03/08 08:24:06
>>686
↓横レスだが、ZIP形式の代わりにLZH形式で圧縮するなら、この二つを併用して…
URLリンク(www.vector.co.jp)
URLリンク(www.vector.co.jp)
↓
例えばWindowsXPの場合、"Lha32.exe"が"C:\WINDOWS"フォルダ直下またはカレントフォルダ、
"UNLHA32.DLL"が"C:\WINDOWS\SYSTEM32"フォルダ直下または"Lha32.exe"と同じフォルダに
存在する状態で、以下のコマンドラインを打ち込めばOKなんだけどね。
LHA32 A /D1 "%USERPROFILE%\デスクトップ\macros.lzh" "J:\aaa\*"
696:デフォルトの名無しさん
10/03/08 08:33:40
>695をちょっと訂正。
macros.lzh → aaa.lzh
いずれにせよ"%USERPROFILE%\デスクトップ\"を指定するのがポイント。
ただし「窓の手」などでデスクトップのフォルダを任意のフォルダに変えてる場合、この手段は使えない。
697:デフォルトの名無しさん
10/03/08 23:24:41
>>691
バッチというかコマンドラインでやっても問題ない
アーカイバってどんなのがあるの?
一見しただけじゃわからないからな
698:デフォルトの名無しさん
10/03/09 01:03:50
有名どころならWinRARとか7zipでもできるよ
699:デフォルトの名無しさん
10/03/09 01:31:57
コマンドラインならundll.exe使っとけ。統合アーカイバDLLならどれでもおk。
700:693
10/03/09 01:48:24
圧縮できればいいのなら makecab という手もある
701:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/09 15:34:51
CMDで↓の様なトランザクション処理はどのように記述すればよいのでしょうか?
これがないと怖くて処理が書けないのですが。
PowerShell 2.0の新機能(5) ―トランザクション編(1/3):CodeZine
URLリンク(codezine.jp)
703:デフォルトの名無しさん
10/03/09 16:31:12
@echo off
powershell syori.ps1
704:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/09 17:13:21
図解入門 よくわかる最新データ圧縮技術の基本と仕組み
―情報圧縮技術とアルゴリズムの基礎講座
How‐nual Visual Guide Book
圧縮アルゴリズム―符号化の原理とC言語による実装 C magazine
706:デフォルトの名無しさん
10/03/17 12:10:47
Windows Vistaのバッチファイルについて質問です。
EXEの起動でパラメータを渡す際スペースがあるものは""
で囲むと思っていたのですが
test.exe "C:\Dir 1\"
とすると最後の\が消えて
C:\Dir 1"
として受け取ってしまうようでした
試しにVCで__argvを確認してもそうなっているようでしたが
どんな書式規則でこうなるんでしょうか?
707:デフォルトの名無しさん
10/03/17 12:19:37
そういやウチのWinXP(SP3)では以下のようにVBScriptファイルを起動すると、
ちゃんと"C:\Dir 1\"と受け取ってくれたよ。
確かWin95/98/Me/NT/2000でも同じ挙動だったはず。
test.vbs "C:\Dir 1\"
708:デフォルトの名無しさん
10/03/17 12:30:02
>>707
確認してみましたが、確かにVBSだときちんと受け取ってますね・・。
理由は気になりますが、書式として間違っていたわけではないと
わかっただけで大収穫です。
ありがとう。
709:デフォルトの名無しさん
10/03/17 14:19:30
>>706
test.exe "a b c d"の中に"を入れるときは、\"でエスケープするだよ
test.exe "a \"b c\" d"
710:デフォルトの名無しさん
10/03/17 19:29:21
>>709
おお!なるほど!エスケープを使えたとは知りませんでした。
すっきり解決しました。ありがとう。
711:デフォルトの名無しさん
10/03/17 20:03:53
exeによって解釈は違うから永久にすっきりしないよ。
712:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/17 23:12:40
某コマンド 某オプション | more | findstr /b /e /c:"hoge foo %fuga%"
714:デフォルトの名無しさん
10/03/17 23:27:56
/x
715:デフォルトの名無しさん
10/03/18 01:51:47
動画ファイルだけどシステム属性が付いてるファイルがあります。
ググったところ、コマンドプロンプトから「attrib ドライブ名:\ファイル名.拡張子 -s」で解除できることがわかりました。
いちいちコマンドプロンプトからやらないで、バッチファイルを作って、それを実行することで解除するようにするにはどういう記述を書けばいいのでしょう。
716:デフォルトの名無しさん
10/03/18 02:19:01
つ スレリンク(software板)
717:デフォルトの名無しさん
10/03/18 10:01:26
>715
@echo off
attrib ドライブ名:\ファイル名.拡張子 -s
718:デフォルトの名無しさん
10/03/18 10:12:28
>>711
Windowsのコマンドで、きえる、\"以外の例を挙げてみろよ
719:デフォルトの名無しさん
10/03/18 10:54:37
"C:\Program Files\Internet Explorer\iexplore.exe" "URLリンク(www.ya\)"hoo.com"
720:デフォルトの名無しさん
10/03/18 17:42:01
無理すんな
721:デフォルトの名無しさん
10/03/18 19:20:51
URLリンク(msdn.microsoft.com)
CommandLineToArgvW 関数
対応情報
Windows NT: バージョン 3.5 以降を使います。
Windows: サポートされていません。
Windows CE: サポートされていません。
別に無理していないけど、Windowsでサポートされていない関数の挙動を
Windows標準とみなすのはどうかと思うわけよ。
実際いろいろなexeがそれぞれ好き勝手に解釈しているし。
722:デフォルトの名無しさん
10/03/18 19:55:53
そんな便利なものがあったのか
723:デフォルトの名無しさん
10/03/18 20:56:58
NT標準でいいが 9xとかいらね
724:デフォルトの名無しさん
10/03/18 22:29:59
9xは__argv、NTはCommandLineToArgvW
725:デフォルトの名無しさん
10/03/19 17:12:30
>>721
無理すんな
726:デフォルトの名無しさん
10/03/20 16:59:48
環境変数のuserpartってなに?
727:JGSDF
10/03/21 00:49:25
syosinsya
728:JGSDF
10/03/21 00:51:01
cmd
729:712
10/03/21 13:59:48
>>713
moreコマンドでは某コマンドの出力行が長くなった時に問題あるかと思い、
find -v ""にて標準出力を無条件にfindする方法にて対応しました。
ですが、LF改行の出力が別のコマンドでフィルタすることによって、
CRLF改行に変換できるというのが大変参考になり、どうもありがとうございました。
>>714
/xオプションなら/bと/eを併用しなくてもよかったのですね
ヘルプやオンラインマニュアルで印刷やプリントといったキーワードが使われていたため、
完全一致検索のことを指していると気づいていませんでした。
マイクロソフトの翻訳は微妙なことも多いので、英語版サイトもこれからは見るようにします。
どうもありがとうございました。
730:712
10/03/22 08:36:22
引数%1がフォルダだった場合とファイルだった場合で
処理分岐するバッチファイルを作成したいのですが、
修飾子%~a1で取得できる属性には、ディレクトリとファイルを区別する
属性がなく、困っています。
731:730
10/03/22 11:28:45
OSはWindows Server 2003です。
書き忘れていました.
732:デフォルトの名無しさん
10/03/22 12:55:32
あるけど?
733:730
10/03/22 13:17:56
>>732
どうすればよいか教えて頂けませんか?
734:デフォルトの名無しさん
10/03/22 17:13:34
dirかcd
735:デフォルトの名無しさん
10/03/22 17:25:02
if exist dirname\con echo dir
736:デフォルトの名無しさん
10/03/22 18:17:09
cd foo && echo succ || echo fail
737:デフォルトの名無しさん
10/03/22 21:26:33
FOR /F "eol=-" IN ("%~a1") DO ECHO FOLDR
FOR /F "eol=d" IN ("%~a1") DO ECHO FILE
738:デフォルトの名無しさん
10/03/22 21:46:12
OS:Windows2003 server,WindowsXP
複数のCSVファイル(yyyymmdd_hhmmss.csvのフォーマット)
をmoreコマンドでひとつのcsvファイルにマージする際、
プライマリキーにおいて重複するレコードを最新のレコード以外
削除するほうほうってないですかね。
バッチ単体で。
739:デフォルトの名無しさん
10/03/22 22:14:40
ない
740:デフォルトの名無しさん
10/03/22 22:40:00
dir /ad /b "%~dp1" | findstr /x "%~nx1" && echo foruda
741:デフォルトの名無しさん
10/03/23 18:37:03
>>736
cdが変わるからやだ
742:デフォルトの名無しさん
10/03/23 19:01:51
>>735
"dir name"だと駄目やんけ
743:デフォルトの名無しさん
10/03/23 20:29:25
cd "c:\System Volume Information" && echo succ || echo fail
744:デフォルトの名無しさん
10/03/23 20:34:37
>>741
pushd&popd使えよ
745:デフォルトの名無しさん
10/03/23 22:45:39
つcmd /c cd
746:デフォルトの名無しさん
10/03/24 23:35:07
バッチ内でwmic process get や wmic ntevent を使用して、結果をテキストファイルに出力しようとしています。
ここで、wmicの出力がUnicode、別のリダイレクト部分(START、ENDなどのコメント)がSJISで出力されてしまいます。
wmicの出力をSJIS(CR+LF)にする方法はありますでしょうか。
747:デフォルトの名無しさん
10/03/25 01:01:55
URLリンク(scripting.cocolog-nifty.com)
748:デフォルトの名無しさん
10/03/25 19:05:39
>別のリダイレクト部分(START、ENDなどのコメント)がSJISで出力されてしまいます。
これをunicodeで出せばよい
749:デフォルトの名無しさん
10/03/26 00:35:26
>>740
rootに使えん
750:デフォルトの名無しさん
10/03/27 00:31:19
>>742
if existはどうやっても駄目だな
751:デフォルトの名無しさん
10/03/27 00:43:39
if exist "dir name\*" は?
752:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/27 02:11:47
pushd %1&&popd
echo %errorlevel%
754:デフォルトの名無しさん
10/03/27 07:01:38
>>752
>ふと思ったのは %1 を渡された時にたとえば aaa と aaa========== を見分けるにはどーすりゃいいんだ?
ヒント:findstr /x
755:デフォルトの名無しさん
10/03/27 09:22:25
>>754
findstr をしようにも、たとえば
echo %1
というバッチファイル test.bat で
test.bat aaa と test.bat aaa===== でどちらも aaa となって末尾の = が拾えない
のを「見分けるにはどーすりゃいいんだ?」と思ったんですが。
オレ何か勘違いしてる?
756:デフォルトの名無しさん
10/03/27 14:29:01
>>751
あまいな .もない、空のフォルダってぇのがあるのだ
>>752 >>753
アクセス権がないフォルダはファイルなのか
>>755
別の話を絡めるな
test.bat "aaa====="
757:デフォルトの名無しさん
10/03/27 14:35:30
厳密にやりたきゃ別の言語使えよ。もう質問してる奴もいないし秋田。
758:デフォルトの名無しさん
10/03/27 15:56:47
別の言語使いたけりゃ他スレへ行けよ
759:デフォルトの名無しさん
10/03/27 17:34:27
厳密にやりたきゃ%~a1を使えばよいだけの話
760:デフォルトの名無しさん
10/03/28 17:31:02
あるソフトウェアのバージョン違いが3つほど入ってるんだけど
デスクトップに同じ見た目のアイコンが3つあるからややこしくて。
バッチファイルをクリックすると上下ボタンでどのソフトを起動するか
選択できて、エンター押すと実行っていうのを作りたいんだけど
誰か作ってくんない?
イメージ的にはウィンドウズをセーフモードで起動したときに
選択する画面がまずでてくるんだけどあんな感じ☆
761:デフォルトの名無しさん
10/03/28 17:56:46
アイコン変えればいいじゃん
762:デフォルトの名無しさん
10/03/28 18:03:24
デスクトップに3つあるアイコンそれぞれに
異なるショートカットキーを指定すればいいじゃん
763:760
10/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:デフォルトの名無しさん
10/03/28 19:38:46
Enterなしにキー入力を受け取る方法がないから無理
765:デフォルトの名無しさん
10/03/28 19:47:41
指定したファイルをホームページ(FTPで)にバッチファイルで送信することは可能でしょうか?
766:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/28 20:17:58
if 1==2 (
start notepad
start mspaint
start calc
)
↑
768:デフォルトの名無しさん
10/03/28 21:11:49
大昔はそういうメニューが普通にあったが、GUIで死滅したな
あってもブート選択画面ぐらいか
769:デフォルトの名無しさん
10/03/28 21:15:15
1文字読み取って制御を返すツール作ればいろいろ用途が広がるよ。
2ストロークで26^2個のツール呼び出せるランチャ作ったけど軽くて便利。
770:デフォルトの名無しさん
10/03/28 22:05:34
powershell使えばカーソル選択メニューが作れるよ
771:デフォルトの名無しさん
10/03/28 22:32:52
>>765
できるよ
バッチファイルとまた一つftpコマンドを書いたテキストファイルが必要になる
772:デフォルトの名無しさん
10/03/29 13:10:44
>>771
遅レスすみません。
ありがとうございます。おかげでできました。
773:デフォルトの名無しさん
10/03/29 21:37:47
コマンドプロンプトに表示された文字を(txt等)に出力ってできますか?
774:デフォルトの名無しさん
10/03/29 21:42:46
無理
775:773
10/03/29 22:54:06
すみません、自己解決しました。
test.bat > log.txt
776:デフォルトの名無しさん
10/03/29 23:40:05
>>775
それだと標準エラーがファイル出力できないよ
777:デフォルトの名無しさん
10/03/29 23:48:00
test.bat > log.txt 2<&1
778:デフォルトの名無しさん
10/03/29 23:59:44
>>776-777
そうなんですか、知りませんでした!
ありがとうございます。
779:デフォルトの名無しさん
10/03/30 11:24:07
質問です。
ファイル
a.txt.bak
ab.html.bal
abc.exe.bak
があるとすると
拡張子.bakだけ一括で名前変更できるでしょうか?
780:デフォルトの名無しさん
10/03/30 13:17:31
できないわけがない
781:デフォルトの名無しさん
10/03/30 13:35:10
ren *.bak *.hoge
782:デフォルトの名無しさん
10/03/30 13:51:39
それじゃ
a.txt.baka
ab.html.aho
abc.exe.baka
拡張子.bakaだけ一括で名前変更できるでしょうか?
783:779
10/03/30 14:02:57
すみません、質問の仕方が間違えていました。
bakの部分だけ消したいんです。
a.txt.bak→a.txt
784:デフォルトの名無しさん
10/03/30 14:17:18
ren *.bak *.
785:デフォルトの名無しさん
10/03/30 15:07:17
>>784
ありがとうございます
できました
786:デフォルトの名無しさん
10/03/30 16:00:55
hogeよりはahoやbakaの方が好き
おっと、kusoも使うなw
787:デフォルトの名無しさん
10/03/30 17:21:12
chinko
manko
unko
shikko
788:デフォルトの名無しさん
10/04/06 00:27:29
すみません。テキストファイルの中身の特定行だけ抜き出す方法を教えてください。
test.txt中身
---------------
morning
hello
bye
---------------
上のようなファイルがあったとして、1行目のmorningや、3行目のbyeを
変数やファイルに出力する方法はないでしょうか。
外部コマンドは使えないWindowsXP/2003環境です。
789:デフォルトの名無しさん
10/04/06 02:28:58
for /?
790:デフォルトの名無しさん
10/04/06 02:28:59
>>788
find使って >baka.txtとかで出力
うまく使えば一つのバッチファイルで色んなバッチファイルを作成することができるから便利
791:デフォルトの名無しさん
10/04/06 07:40:04
findは外部コマンド
792:デフォルトの名無しさん
10/04/06 07:56:00
>>788
findstr /r "^morning$ ^bye$" > hoge.txt
793:デフォルトの名無しさん
10/04/06 09:11:31
>>791
空気読め馬鹿
794:デフォルトの名無しさん
10/04/06 09:28:43
料理できないと買ってきた惣菜をならべるぐらいのことでも自慢するんだよ
それ外で買ってきたんだろとあきれられてても本人は満足
795:デフォルトの名無しさん
10/04/06 20:43:40
バッチファイルでテトリス作って
796:デフォルトの名無しさん
10/04/06 22:12:33
>>792
ありがとうございます。
説明が不足してたのですが、必ずしも1行目にmorningがあって、3行目にbyeがあるわけじゃない場合に
1行目、3行目を抽出って出来るんでしょうか。根本から違うやり方考えた方が良いですかね・・・。
797:792
10/04/06 22:28:25
findstrコマンドは/cオプションを指定しない場合は、
二重引用符内で半角空白区切りで指定されたキーワードを
OR検索できるんだけど、
やりたいのは、特定キーワードで抽出したいんじゃなくて、
特定の行番号を抜き出したいってこと?
798:デフォルトの名無しさん
10/04/06 23:05:41
下のようなのを作る場合変数iの引数は12個まで
とかいう決まりがあるのでしょうか?
for %%i in (%*) do xxxxx %%i
pause
このバッチファイルに引数となるファイルをドラッグ&ドロップしたら
「指定されたデバイス、パス、またはファイルにアクセスできません。
アクセス許可がない可能性があります。」
と言われます。ちなみに12個まではOKでした。
799:デフォルトの名無しさん
10/04/06 23:18:13
>>798
D&Dした複数ファイルのフルパス文字列の長さが限界に達したのでは?
その12ファイルをもっと浅い(フルパスの短い)階層に移動させれば、
13ファイル以上もいけるかと。
Win9x系かNT系かでも変わってくると思う。
800:799
10/04/06 23:21:16
ごめん。NT系でもNT4.0や2000とXP以降で違うみたい。
URLリンク(support.microsoft.com)
801:デフォルトの名無しさん
10/04/06 23:25:24
>>799,800
たぶん、ファイルの長さだと思います。
ありがとうございました。
802:デフォルトの名無しさん
10/04/06 23:34:51
たぶん?
結局どうでもよかったのか
803:792
10/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:デフォルトの名無しさん
10/04/08 23:02:04
>>801
>たぶん、ファイルの長さだと思います。
ファイルサイズは関係ないだろ
805:デフォルトの名無しさん
10/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
10/04/11 18:40:33
アクティブな画面を「最新の情報に更新」にするバッチってありますかぁ?
どなたかよろしくお願いします。
807:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/11 19:53:59
しかしどうやって動かすんだ?
動いたときアクティブなウィンドウは?
809:デフォルトの名無しさん
10/04/11 20:05:00
想定の範囲外です(キリッ
適当なフリーソフト使え
810:デフォルトの名無しさん
10/04/12 19:17:26
ローカルでphpスクリプトを動かす際に一連の流れを
バッチファイルでまとめてしまおうと思ったのですが
cd "ディレクトリ1"
httpd.exe
cd "ディレクトリ2"
C:\php\php.exe batchtest.php
このようなバッチファイルを作ったところ
httpd.exeを起動したところで止まってしまい、httpd.exeを終了させないと
次の行に行きませんでした。
どのようにすればすべての処理が行われるでしょうか?
811:デフォルトの名無しさん
10/04/12 19:36:02
cd "ディレクトリ1"
httpd.exe
taskkill /im httpd.exe
cd "ディレクトリ2"
C:\php\php.exe batchtest.php
812:デフォルトの名無しさん
10/04/12 20:56:35
start httpd.exe
813:デフォルトの名無しさん
10/04/13 07:38:21
>>811
ヒネリがないので笑えん。
814:デフォルトの名無しさん
10/04/13 12:59:02
>>813
素直な奴だな。
httpd.exeを終了させないとtaskkillが実行されないという二段オチなのに。
815:デフォルトの名無しさん
10/04/13 14:49:58
下記のバッチ内、:mpexec_core にある if 文で落ちてしまいます。
書き方に何か問題があるのでしょうか?
URLリンク(ideone.com)
816:デフォルトの名無しさん
10/04/13 15:10:11
その行だけじゃわからないよ
環境変数に適切な値が入っているならちゃんと動くように見える
echoの表示やエラーメッセージはどうなってんの?
エスパー初級な解答
if "%xxx%" geq "%yyy%"のように""で括れば
環境変数が空の場合でも落ちる事はなくなるはず
817:815
10/04/13 15:25:07
>816
if "%MP_MAX%" geq "%MP_NUM%" (
に変更しても落ちました。
直前の出力は
if 1 geq 1 (
なので、両方に1が入っていることは確認済みなのですが・・・。
エラーは 「コマンドの構文が誤っています。」 です。
818:デフォルトの名無しさん
10/04/13 18:43:38
エラーの詳細が出るようにバッチの先頭におまじないを書いておく
echo W 100 2 0 200 | debug
819:デフォルトの名無しさん
10/04/13 18:47:20
>>817
()のなかの命令が不適切なのでは?
820:デフォルトの名無しさん
10/04/13 19:54:16
( ) の中で SET を使うのはやめといた方がいいよ
GOTO 文などに置き換えれば動くはず
821:815
10/04/13 20:06:10
>>819,820
()の中を関数化したら正常に動作しました。
ありがとうございました。
822:デフォルトの名無しさん
10/04/13 20:43:32
すべてのウィンドウを「最新の情報に更新」にするバッチってありますかぁ?
823:デフォルトの名無しさん
10/04/13 22:48:22
ないよ
824:デフォルトの名無しさん
10/04/14 02:26:10
ありがとうございました。
825:デフォルトの名無しさん
10/04/14 17:07:20
作成日時は%~t1で取れますかぁ?
826:デフォルトの名無しさん
10/04/14 17:14:10
ヘルプ見るの面倒
827:デフォルトの名無しさん
10/04/16 09:14:28
>>825
こういうこと?
for /? より
%~tI - %I ファイルの日付/時刻に展開します。
828:デフォルトの名無しさん
10/04/16 14:10:17
それ更新日時
829:デフォルトの名無しさん
10/04/16 18:25:03
>>828
827じゃないが、ファイルの日付が何になるかって、
環境変数で変更できなかったっけ?
まぁ、できなくても、作成日時だったら、
他の手段で、何とでもなるから困らないけどね
830:デフォルトの名無しさん
10/04/16 20:08:20
それDIRCMD
831:デフォルトの名無しさん
10/04/17 06:44:59
>>814
だから、それは一目見て分かることで何の面白味もないの。
832:デフォルトの名無しさん
10/04/17 07:35:16
>>810
httpdが無いと動かないようなphpなら
netstatとか使って、httpdが起動完了したことを検知しないと駄目な気がする
まぁ、batchtest.php内で成功するまで待つって手もあるけど…
あと、最後にhttpdを止める必要はないの?
動かしっぱなしなら、httpdをバッチで起動する意味はないと思うけど?
833:デフォルトの名無しさん
10/04/20 18:16:02
馬鹿じゃないんだからそんなこといちいち聞かれなくても分かってますよ。
834:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/23 23:48:57
実装自体はいけそう
que指定時の2の処理が不明だったり
格納ファイルのフォーマット(ファイル名の規則)をどう定義するか
カウンタの初期値をどこから設定するかなど細部が気になる
836:デフォルトの名無しさん
10/04/24 00:35:27
>>835
携帯から書いたら改行多すぎと言われて、消しすぎたぜ…
■大体決めたこと
1.格納先のファイル名は入力ファイル名+連番。
1~が数えやすそうかな。
2.返却値はキューの残数。
取出失敗時はマイナス
■迷ってること
1.格納先DIRパスとファイルの種類は1対1で対応させるかどうか?
2.キュー残数チェック用のオプションを実装するか?
3.もっと汎用的な設計がないか?
(サンプル的なやつ)
4.バッチ暦10日だけどそもそも言語仕様的に無理とかないよね?
できそうと聞いて安心したよ。
迷4以外はただの設計とアルゴリズムだし。
技術的に困ったらまたお願いします。