1 名前:デフォルトの名無しさん [2008/12/22(月) 23:13:09 ] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 ◆◆ご注意◆◆ Windows板の「初心者~管理者まで必読!コマンドライン(DOS Pt.*)」スレや PC初心者板のURLを貼りたがる人は、削除人にも認定された荒しですので その人に指示に従う必要はありません。 ◇前スレ 【.cmd】 バッチファイルスクリプト %3 【.bat】 pc11.2ch.net/test/read.cgi/tech/1217860043/ ※関連スレは>>2 あたり
643 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 02:27:19 ] たしかに無限ループしそうだな。じゃ改良・・・ CALL :UNKO "C:\Documents and Settings\aaa abc 123.txt" GOTO :EOF :UNKO SET A=%~n1 SET B= :01 IF "%A%"=="" GOTO :02 SET B=%B%%A:~0,1% SET A=%A:~1% IF NOT "%A:~0,1%"==" " GOTO :01 :02 SET B=%B%%~x1 RENAME %1 "%B%" EXIT /B >>642 そんなにいい方法があるんなら、具体的にコード書いてくれよ。
644 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 12:04:12 ] >>634 のはマッチした場所を置換するだけだから set A=C:\Documents and Settings\aaa abc 123.txt set A=%A:* =hoge% echo %A% hogeand Settings\aaa abc 123.txt ってなるだけじゃね? set A=%A: *=hoge% みたいな使いかたはできないし。
645 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 12:11:14 ] 俺は空白チェックなんて面倒なことやらずにforを一発で抜けりゃいいんじゃないのかと思ったけど。 set A=C:\Documents and Settings\aaa abc 123.txt for /F "delims= " %%i in ("%A%") do ( set B=%%i goto aaa ) :aaa echo %B%
646 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 13:05:11 ] そんなメンドクセーならもういいよ
647 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 15:30:43 ] >>645 はfor/fがわかってないみたい goto aaaが必要か? >>644 set A=!A:%A:* =%=!
648 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 15:47:26 ] >>647 は原理だから応用しろよ(と書いとかないとな
649 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 19:23:27 ] なるほど
650 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 23:04:39 ] >>634 で?
651 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 23:08:56 ] >>642 >>634 そんなにいい方法があるんなら、具体的にコード書いてくれよ。
652 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 23:11:14 ] なるほどなるほど
653 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 12:01:48 ] chcp 65001の状態で、バッチファイルを動かす方法はないものでしょうか? コマンドプロンプトでUTF-8使おうとすると不便でなりません。 >>34 読んでもいまいちわからんない…
654 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 12:58:54 ] それが物を聞く態度か?
655 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 13:12:34 ] そんなにいい方法があるんなら、具体的にコード書いてくれよ。
656 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 16:03:42 ] >>653 激しく同意! わたくしからもお願いします。
657 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 21:29:49 ] なんか最近基地外が棲みついたようだな…
658 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 21:31:00 ] わからんない
659 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 22:16:27 ] 分からないならレスしないでください
660 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 01:49:29 ] >>653 ない
661 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 02:03:49 ] ないならレスしないでください
662 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 02:14:11 ] >わからんない は「わからん」の否定だろ?
663 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 16:33:54 ] chcp 20932 chcp 50220 ができて chcp 65001 ができない理由は何なんだ!
664 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 17:20:47 ] 分からないならレスしないでください
665 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 19:28:50 ] コンソールが65001をまともにサポートしてないんですよ。
666 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 22:07:46 ] サポートしてない理由は何なんだ!
667 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 22:15:54 ] 基地外が棲みついたようだな…
668 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 00:50:10 ] 3バイト文字コードをサポートしてないんじゃなかろか
669 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 01:04:47 ] >>668 それもあるみたい。 あと、UTF-8がどこの地域と結びついていないというのも、 コードページから地域情報を引き出そうというおかしなプログラムに都合が悪いそうだ。 そんなことがOld New Thingに書いてあった。
670 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 01:43:50 ] コンソールでカーソル位置がずれるところを見ると、コンソールが悪いじゃね
671 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 03:05:53 ] ユニコードにしか無い文字を含むファイル名があっても DIR コマンドで正しく表示されるんだよな。 ってことは、コンソールはユニコードが常時表示可能な状態なんだよな。 DIR コマンドはユニコード専用APIで文字を表示してるってことなのかな? じゃぁたとえば、標準入力から utf8 文字を読み込んで、ユニコード専用APIで 表示するフィルターソフトがあればいいわけじゃん。 (UNIXで言えば「nkf」みたいな) 仮にそれを 「unko.exe」 だとすると、 C> utf8アプリ | unko.exe ってやれば、正しく表示してくれることになる。 ・・・で、unko.exe に該当するようなソフトって、どこかに無いですか?
672 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 04:15:54 ] 分からないならレスしないでください
673 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 10:50:00 ] dir /S /B *.txt > list.txt とすると、ファイルのフルパスがlist.txtに出力されますが。 出力されるパスの区切り文字を、\ から / に変えるにはどうすればいいでしょうか? とりあえず現状はWSH使ってやってるんですが、コマンドプロンプトの標準コマンド だけで出来る方法があればいいなというとこです。
674 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 11:17:52 ] ここはプログラムを作る人の板です パソコンの使い方の質問はご遠慮ください。 質問の内容にあった板を利用しましょう。 PC初心者 pc11.2ch.net/pcqa/ Windows pc12.2ch.net/win/ 初心者~管理者まで必読!コマンドライン(DOS Pt.7) pc12.2ch.net/test/read.cgi/win/1217738171/
675 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 13:27:35 ] 分からないならレスしないでください
676 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 13:29:38 ] >>671 これ?って全然違うか・・・ cocot - COde COnverter on Tty vmi.jp/software/cygwin/cocot.html
677 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 13:30:45 ] そんなにいい方法があるんなら、具体的にコード書いてくれよ。
678 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 15:57:47 ] chcp 1200ができればよいのだがエラーになる。なぜだ!
679 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 16:19:35 ] utf-8版cmd.exe互換シェルを作れば? ないのかね?
680 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 16:40:41 ] ckwとかどうよ
681 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 17:55:45 ] cygwinでckの方は使ってる。ckwはUTF-8はさすがに無理か・・・
682 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 18:48:28 ] パソコンの使い方の話は板違い
683 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 18:56:11 ] バッチファイルをunicodeやutf-8で書きたいのか sjis範囲外の文字をかきたいのか、どっち?
684 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 19:14:16 ] ttp://mediakey.dk/~cc/windows-console-cmdexe-replacement/
685 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 13:56:46 ] いやでも実際、コマンドプロンプトでUTF-8扱う話題なんて、どこでしたらいいんだよw
686 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 13:57:49 ] >>684 Console重すぎ。まだckwの方がいい
687 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 14:37:45 ] JISもだめだから3バイトや地域は関係ないんじゃないか
688 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 15:05:40 ] シェルだけやってもだめ moreとかどうする
689 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 16:18:51 ] バッチファイルで例えば echo ™©® はどうすればいい?
690 名前:671 mailto:sage [2009/04/10(金) 21:03:07 ] >>671 を自分で作ってみました。 ソースコード ja.pastebin.ca/1387923 自分のとこは java のサーバ アプリ(コンソール アプリ)が utf-8 で動作してるんですが コイツを使えば表示だけは文字バケしなくなりました。 誰かの役に立つかな・・・
691 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 22:09:01 ] >>690 MSゴシック chcp 65001
692 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 22:53:36 ] 悪意のあるソフトウェアを検出
693 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 01:46:59 ] >>691 過去ログ読んでよ。それができくらいなら苦労しないよ。
694 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 02:21:41 ] 表示だけなら>>691 でできるだろ できないのはファイル入力だろ
695 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 03:00:14 ] たしかに google で検索すると chcp 65001 を使うやり方がたくさんヒットするから おそらくソレを鵜呑みにしてコピペしただけだろうが、 実際に *自分* で試してみたのか? >>691
696 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 10:53:12 ] >>691 は絶対に自分で試してないw
697 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 17:20:22 ] すいません質問させてください。 既出だったらすいません C:\Documents and Settings\Adiministrator\デスクトップ という文字列から、"\"をカウントして変数に出力するスクリプトを作成したいのですが コマンドプロンプトのみ使用する場合、どのようなスクリプトを作成すれば良いのでしょうか。 基礎的な質問ですが宜しくお願いします。
698 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 17:39:41 ] CALL :UNKO "C:\Documents and Settings\Adiministrator\デスクトップ" ECHO %A%個 GOTO :EOF :UNKO SET X=%~1 SET A=0 :UNKO_1 IF "%X:~0,1%"=="\" SET /A A=%A%+1 SET X=%X:~1% IF NOT "%X%"=="" GOTO :UNKO_1 EXIT /B
699 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 18:00:07 ] ありがとうございました
700 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 18:40:44 ] UNKOでる~~~~ がまんできない~~~~~~ UNKO
701 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 18:53:25 ] SET /A A=%A%+1 右辺の % 要らない
702 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 18:53:58 ] gimpo.2ch.net/test/read.cgi/toilet/1237925539/
703 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 18:54:39 ] 人 (__) (__) (´‘ω‘ `) UNKOうんこっこ / つ (_(__⌒) |^lヽ、 ┌●(_)─┘.| ) ブリブリ
704 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 20:00:24 ] SET /A A=%A%+1 右辺の A 要らない SET /A A+=1
705 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 20:12:01 ] >>898 どんくさ
706 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 20:20:59 ] >>699 chcp 1252 echo echo ™©® >hoge.cmd hoge.cmd
707 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 20:22:38 ] >>689
708 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 20:50:02 ] うんこ臭
709 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 20:53:34 ] >>706 echo ™©®야후 ならどうする?
710 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 20:55:12 ] twu ?
711 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 20:57:30 ] なんか最近基地外が棲みついたようだな…
712 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 02:17:40 ] >>698 %X:*\=%
713 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 02:40:28 ] だったら最初からそう書けばいいじゃん! 後だしジャンケンに勝っても自慢にならんぞ!
714 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 02:42:45 ] 可哀相な子
715 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 17:16:55 ] >>683 unicodeなら>>25
716 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 18:40:06 ] powershellならunicodeでもutf-8で書ける
717 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:01:21 ] 指定フォルダ内の更新日時が一番新しいファイルを開くには どうすればよいでしょうか?
718 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:04:22 ] 過去ログ読んでよ。
719 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:06:02 ] 分からないならレスしないでください
720 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:08:26 ] すでに答えは出ている。
721 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:58:01 ] >>716 よくわからんが、powershell用のターミナルはUTF-8表示できるの?
722 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 21:29:55 ] cmd.exe用のターミナルはUTF-8表示できるのに。
723 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 21:39:31 ] それぐらい試せよ
724 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 21:41:22 ] >>709 hoge.ps1 echo ™©®야후
725 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 22:42:48 ] 分からないならレスしないでください
726 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 23:29:50 ] >>718 探しましたがわかりませんでした・・・。 申し訳ないですが、教えてくださいm(_ _)m
727 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 00:39:00 ] たかが Powershell ごときのために 過去のソフトウエア資産をすべて捨てるわけにはいかない。 こんなの、マイクロスフトのせんずりshellやんけ。
728 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 00:48:44 ] お客のシステムでPSが使えるのはいつ頃からだろうか・・・
729 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 01:00:52 ] cd /d 指定フォルダ for /f %%i in ('dir /o-d') do ( start "" "%%~fi" goto :break ) :break
730 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 01:10:38 ] dir /b
731 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 01:19:18 ] cd /d 指定フォルダ for /f %%i in ('dir /b /od') do set x="%%~fi" start "" %x%
732 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 01:52:35 ] pushd
733 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 02:31:35 ] なるほど ありがとうございます。 ファイル名にスペースを含んでいた場合どう対応させればよいのでしょう?
734 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 09:46:27 ] くくってあるだろ
735 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 19:16:48 ] >>721 MSゴシック chcp 65001 PowerShell
736 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 19:35:54 ] なんか最近基地外が棲みついたようだな…
737 名前:デフォルトの名無しさん [2009/04/15(水) 11:15:16 ] c:\gazou(画像を入れているフォルダ)に移動してそこのファイル・フォルダ一覧を取得したいです image.txtとpath.txtに分け、path.txtに画像を入れているフォルダ名を入れ、 image.txtからpath.txtを読み込み、フォルダに移動して一覧を表示させたいのですが image.txtのcdを実行した時にc:\%imagedir%に変数にセットした値が反映されず、c:\となってしまいます 変数に格納したフォルダ名を利用して、cdを実行した時にc:\gazouに移したいのですがどなたかご教示お願い致します 【path.txt】 set imagedir = gazou 【image.txt】 call path.txt cd c:\%imagedir% dir PAUSE
738 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 12:14:43 ] なんだよ.txtって素直に.batにしろ cmdって.bat, .cmdしか処理しなかったんじゃないか
739 名前:737 mailto:sage [2009/04/15(水) 13:14:06 ] すみません、.txtのところは.batの記述ミスです 恐れ入りますが.batとして読み替えていただけると助かります 訂正 image.txt→image.bat path.txt→path.bat
740 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 13:55:34 ] @echo off set imagedir = gazou echo "%imagedir%" echo "%imagedir %"
741 名前:737 [2009/04/15(水) 14:46:37 ] >>740 ありがとうございます "%imagedir %"という風に記述したら画面に変数が表示されたのですが cd "%imagedir %"としてみたんですが半角英数が入ってしまってcdが実行できませんでした cd "%imagedir%"では変数が表示されません たいへん恐縮でございますが何卒ご指導お願い致します
742 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 16:54:26 ] 半角英数? set imagedir = gazou
743 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 17:00:31 ] echo "%imagedir : =%"