5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

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

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

2 :デフォルトの名無しさん:2010/06/26(土) 01:47:00
>>1
スレ立て乙

3 :デフォルトの名無しさん:2010/06/28(月) 07:01:18
お願いします。

for /f "usebackq tokens=*" %i in (`echo c:\`) do @set RESULT=%i
echo %RESULT%
c:\

とうまくいくのですがこれにパイプを入れて

for /f "usebackq tokens=*" %i in (`echo c:\ | dir`) do @set RESULT=%i
とすると、| の使い方が誤っています。とエラーになります。
echo c:\ | dirだけ打ち込むと、
dir c:\と同じ結果が得られます。

パイプ処理を用いたコマンド結果を変数に格納したいのですが、うまくいきません。
どのようにすればうまくいくか教えて下さい。

主として使うOSはvistaですが、xpでも動くようにしたいです。



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

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

5 :3:2010/06/28(月) 07:40:33
>>4
レス恐縮です。

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

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

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


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

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


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

8 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/06/29(火) 21:32:22
                 。・ 。・゚。・゚。・゚。゚・.・。゚゜。゚・。.゚・。
              。・゚ 。・゚ 。・゚。・         ・゚.
             。・゚ 。・゚ 。・゚             。・。
            。・゚ 。・゚ 。・゚             。・。・
           。・゚ 。・゚ 。・゚              。・。・゚
          。・゚ 。・゚ 。・゚                。・。・゚・
         。・゚ 。・゚ 。・゚               。・゚・゚・
         。・゚ 。・゚ 。・゚           。・゚・。・゚
         。・゚ 。・゚ 。・゚       。・゚・。・ ゚・
   ∧_,,∧  。・゚ 。・゚ 。・゚     ・。・゚・ 。 ・゚。
  ( ;`・ω・ ) 。・゚ 。・゚ 。・゚。・゚・。 ・゚・。 ・゚・。・゚ ・。・゚・。・゚・ 。・゚ ・。・。・
  /   o━ヽニニニニニニニニニニニニニニニニニニフ
  しー-J


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

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


12 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/07/09(金) 23:41:10
%*を自分でパーズすればできるよ

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

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

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

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

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

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

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

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

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

23 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/07/18(日) 16:29:01
exehder.exe
dumpbin.exe

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

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

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

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

29 :デフォルトの名無しさん: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:2010/07/22(木) 23:29:23
連投ですいません

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

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

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


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

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

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

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

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

ありがとうございました

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

12 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)