[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 05/12 09:42 / Filesize : 13 KB / Number-of Response : 47
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



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

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

【.cmd】 バッチファイルスクリプト %4 【.bat】
pc12.2ch.net/test/read.cgi/tech/1229955189/
【.cmd】 バッチファイルスクリプト %3 【.bat】
pc11.2ch.net/test/read.cgi/tech/1217860043/
【.cmd】 バッチファイルスクリプト %2 【.bat】
pc12.2ch.net/test/read.cgi/tech/1197881068/
【.cmd】 バッチファイルスクリプト %1 【.bat】
pc11.2ch.net/test/read.cgi/tech/1178281991/

4 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 07:07:00 ]
>xpでも動くようにしたいです。

xpだとecho c:\ | dir自体うまくいかないぞ
カレントディレクトリのリストが表示されるだけ
普通にdir c:\形式に書き換えればいいんじゃねーの

5 名前:3 mailto:sage [2010/06/28(月) 07:40:33 ]
>>4
レス恐縮です。

コマンドは、dirを説明上用いていますが、
for /f でパイプが動作しないのです。
コマンドの組み合わせが悪いのかと思い
いろいろコマンドを変えてはみたのですが。

そこをなんとかお教えいただければ。

ちなみに当方の環境では、echo c:\ | dirはうまく動きました。
xp proとメディアセンターエディションで確かめました。


6 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 09:50:46 ]
| を ^ でエスケープして ^|

他の例は「バッチファイル エスケープ」あたりでググれば良いかと。
本筋じゃないけど、>>4 の言うように「echo c:\ | dir」はうまくいかないと思うんだが。
「dir /b < echo c:\」?


7 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 12:01:55 ]
単に説明に使ってるだけだからdirでもdriでもなんでもいいんじゃね

8 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 14:39:04 ]
for /f "usebackq tokens=*" %i in (`"echo c:\ | dir"`) do @set RESULT=%i
"〜"で逃げろ

9 名前:デフォルトの名無しさん [2010/06/29(火) 07:20:47 ]
>>1


10 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 21:32:22 ]
                 。・ 。・゚。・゚。・゚。゚・.・。゚゜。゚・。.゚・。
              。・゚ 。・゚ 。・゚。・         ・゚.
             。・゚ 。・゚ 。・゚             。・。
            。・゚ 。・゚ 。・゚             。・。・
           。・゚ 。・゚ 。・゚              。・。・゚
          。・゚ 。・゚ 。・゚                。・。・゚・
         。・゚ 。・゚ 。・゚               。・゚・゚・
         。・゚ 。・゚ 。・゚           。・゚・。・゚
         。・゚ 。・゚ 。・゚       。・゚・。・ ゚・
   ∧_,,∧  。・゚ 。・゚ 。・゚     ・。・゚・ 。 ・゚。
  ( ;`・ω・ ) 。・゚ 。・゚ 。・゚。・゚・。 ・゚・。 ・゚・。・゚ ・。・゚・。・゚・ 。・゚ ・。・。・
  /   o━ヽニニニニニニニニニニニニニニニニニニフ
  しー-J


ID:にカーソルを合わせると不思議と>>1乙になる馬鹿にはできない魔法のコピペ

11 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 00:07:48 ]
>>10


12 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 19:12:34 ]
ファイルをD&Dすると拡張子を除去するバッチを作ったんですが、
全角スペースが含まれている場合にファイル名が分割されてしまって動きません。
半角スペースが含まれる場合はダブルクォーテーションが付加されるので問題なく処理できるのですが・・・
やはり対処法はファイル名を変更するかD&Dをしないことしかないでしょうか。
echo %1 >> log.txt を追加してやると、ファイル名が分割されてるのが確認できます。

cd /d "%~dp1"
:loop
if %1=="" goto end
rename %1 "%~n1"
shift
goto loop
:end

とりあえず
> rename "たいとる *.*" "たいとる *.*"
でまとめて半角スペースにできたのでこれでいきます。




13 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 23:41:10 ]
%*を自分でパーズすればできるよ

14 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 23:47:10 ]
パーズ

15 名前:デフォルトの名無しさん mailto:sage [2010/07/10(土) 00:17:16 ]
普通のプログラミング言語ならやりやすいだろうけど
%~dp1を記憶しといて一致するまでのやつを連結?
ちょっと大変だなあ。

16 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 17:09:02 ]
ぐぐればサンプルあるよ

17 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 21:13:48 ]
set x=%*
for %%i in (%x: =?%) do echo "%%~i"

18 名前:デフォルトの名無しさん [2010/07/14(水) 11:13:01 ]
&を含む引数を受け取る方法は無いでしょうか?
拡張子関連付けして、他のプログラムから受け取ってます

19 名前:デフォルトの名無しさん mailto:sage [2010/07/14(水) 14:11:35 ]
""で囲ってやると受け取れるみたいだ

20 名前:デフォルトの名無しさん [2010/07/14(水) 14:50:18 ]
>>19
ありがとうございます。
いろいろ試行錯誤してたのが馬鹿みたいに、スマートに解決しました。

21 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 22:04:37 ]
exeファイルがコンソールアプリか否かバッチでどうやっったら判定できますか?

22 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 15:27:37 ]
ttp://chrono.cocolog-nifty.com/programming/2005/07/windows_0e6f.html
こんなのが。バッチは向かない気がバリバリする。



23 名前:デフォルトの名無しさん mailto:sage [2010/07/16(金) 15:34:22 ]
後は任せた

set command=%1
goto %command%

:explorer
:notepad
echo not CUI
exit /b

:cmd
:sort
echo CUI
exit /b

24 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 02:41:59 ]
バリバリ やめて!(ry
@if(0)==(0) echo off
cscript.exe //NoLogo //E:JScript "%~f0" %1
echo %errorlevel%
goto :EOF
@end
var sc=new ActiveXObject("ScriptControl");
sc.Language="VBScript";
sc.AddCode("Function bin(t):bin=AscB(t)+AscB(MidB(t,2,1))*256:End Function");
function B(data){return sc.Run("bin", data);}
var ado=new ActiveXObject("ADODB.Stream");
ado.Type=1;
ado.Open();
ado.LoadFromFile(WScript.Arguments(0));
if(23117!=B(ado.Read(2))){ado.Close();WScript.Quit(-1);}//not MZ
ado.Position=ado.Size>60?60:0;
sigp=B(ado.Read(2));
ado.Position=ado.Size>sigp?sigp:0;
sig=B(ado.Read(2));
if(17744==sig){//PE
ado.Position=sigp+92;
sys=B(ado.Read(2));
ado.Close();
WScript.Quit(sys);
}else if(17742==sig){ado.Close();WScript.Quit(-2);//NE
}else ado.Close();WScript.Quit(-3);//MZ


25 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 16:29:01 ]
exehder.exe
dumpbin.exe

26 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 03:05:32 ]
SHGFI_EXETYPE

27 名前:デフォルトの名無しさん [2010/07/21(水) 23:57:28 ]
バッチを実行したタイミングで指定したテキストファイルに
現在の日時を追記し保存する処理を考えています

できるだけ簡単にやりたいのですがcmd(コマンド)だけでできますでしょうか?
cmdのショートカットだけでできれば1番いいのですが
スレ違いでしたら、すいません。

28 名前:デフォルトの名無しさん mailto:sage [2010/07/22(木) 01:04:13 ]
echo %date% %time% >> "%~0.log"
start "" yourcommand

29 名前:デフォルトの名無しさん mailto:sage [2010/07/22(木) 03:00:58 ]
cmd /c echo %date% %time% >> "%~0.log" & start "" yourcommand

30 名前:27 [2010/07/22(木) 09:57:25 ]
>>28-29
ありがたき幸せ

あとは余計な秒を削るのを調べてみます
yyyy/mm/dd hh:mm:ssにしたいので

31 名前:27 [2010/07/22(木) 18:51:07 ]
>>30の目的が達成できました
バッチスクリプトは奥が深いですね
少し勉強してみます

32 名前:27 mailto:sage [2010/07/22(木) 23:29:23 ]
連投ですいません

cmd /c echo %date% %time% >> "ログ.txt"

これを実行して生成されたファイルを見ると
yyyy/mm/dd hh:mm:ss△
と表記されます(△は半角ブランク)

この半角ブランクをバッチスクリプト内で外す事が出来ずに悩んでます
何か良い方法がありますでしょうか?
また、何故半角ブランクが付加されるのでしょうか?




33 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 00:25:33 ]
>>32
cmd /c echo %date% %time%>> "ログ.txt"
リダイレクトの直前のスペースを書かない

34 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 02:44:59 ]
すいません。誰か教えてください
ドラッグ&ドロップするとファイル名の先頭に「決」をつけるように
ren %~f1 決%~n1%~x1
としたんですが、ファイル名に空白があると「コマンドの構文が誤っています」と出ます。
対処法を教えてください。
また複数ファイルドロップに対応する方法はありますでしょうか?
よろしくお願いします

35 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 04:08:22 ]
for %%a in (%*) do ren "%%a" "決%~n1%~x1"
確認してない

36 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 06:26:32 ]
>>35
ありがとうございます。
確認したら出来ませんwwwでしたが、元にして完成しました。
空白もなんとか解決できそうです。

37 名前:32 mailto:sage [2010/07/23(金) 07:49:36 ]
>>33
そんなオチだったとは…
○| ̄|_

ありがとうございました

38 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 16:38:08 ]
>>34をcmdのショートカットだけでできますか?

39 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 04:02:40 ]
有効なIPが割り当てられているか否かで処理を分岐したいんですが
ネットワークに接続できている場合変数に0、接続できていない場合変数に1を入れたい場合どうすればよいでしょうか?

40 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 10:09:32 ]
>>39
自分自身が持つIPが有効で接続されているかどうかということ?
ipconfigでデフォルトゲートウェイのIPアドレスを取得して
そこにpingして帰ってきた文字列をfindして分岐かな?

41 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 10:40:33 ]
ping後のerrorlevelでええがな

42 名前:デフォルトの名無しさん mailto:sage [2010/08/08(日) 11:49:24 ]
netsh interface <ipv4 or ipv6> show interfaces
netsh interface <ipv4 or ipv6> show ipaddress name=<インデックス or 名前>




43 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 05:05:09 ]
>>40
ありがとうございます。
できました
この方法で分岐しようと思います。

>>41
ありがとうございます。
その方法だと場合によって無効でもerrorlevelに0が入ってしまうんです・・・。
オプションでできるかもしれませんがわかりませんでした。

>>42
ありがとうございます。
一番スマートそうですが
僕のレベルだと理解できませんでした・・・。

44 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 16:32:19 ]
fpcu.on.coocan.jp/dosvcmd/bbs/log/dir/4-0740.html
のようにTESTフォルダ下のフォルダ数を変数に格納したいのですがわかりません
お願いします。
for /D %%f in (*) do set /a i=i+1

45 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 18:29:50 ]
すまんこ
forのヘルプに書いてあったwww

46 名前:デフォルトの名無しさん mailto:sage [2010/08/09(月) 23:03:45 ]
>>44
解決しました。
CD TEST
FOR /F "DELIMS=" %%A IN ('DIR /B ^| FIND /C /V ""') DO SET COUNT=%%A






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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