【.cmd】 バッチファイルスクリプト %7 【.bat】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/02/28(月) 15:12:30.34質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。
※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %6 【.bat】
http://hibari.2ch.net/test/read.cgi/tech/1277465356/
【.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/
0002デフォルトの名無しさん
2011/02/28(月) 16:32:12.620003デフォルトの名無しさん
2011/03/03(木) 16:58:03.900004デフォルトの名無しさん
2011/03/06(日) 18:49:35.040005デフォルトの名無しさん
2011/03/06(日) 19:12:28.360006デフォルトの名無しさん
2011/03/07(月) 01:27:19.220007デフォルトの名無しさん
2011/03/07(月) 13:49:52.32勉強用とかでなくて実用的なサンプルを掲載されてるものです
0008デフォルトの名無しさん
2011/03/07(月) 17:15:00.270009デフォルトの名無しさん
2011/03/07(月) 18:17:28.770010デフォルトの名無しさん
2011/03/07(月) 18:19:31.090011デフォルトの名無しさん
2011/03/07(月) 18:43:49.59コンベンショナルメモリを無駄にしないためにはconfig.sysだけじゃなく
autoexec.batも理解しないと意味ないしね
0012デフォルトの名無しさん
2011/03/07(月) 19:13:40.65けっこう実用的だと思うのはおれだけか
0013デフォルトの名無しさん
2011/03/07(月) 20:13:54.94以前自分が調べたやつから
とりあえず基本
for文
FOR %%B IN (*.TXT) DO TYPE %%B
if文
IF %FLG%==1 DIR
REM コメントだこの野郎
GOTO相当
:START
ECHO そして時は繰り返す
GOTO START
とりあえずチューリング完全
0014デフォルトの名無しさん
2011/03/07(月) 20:26:10.530015デフォルトの名無しさん
2011/03/07(月) 21:58:57.14昔のautoexec.batもそれ以外に使い道ないからちっとも実用的じゃねえ
単なる阿呆だなw>>11
0016デフォルトの名無しさん
2011/03/07(月) 22:00:52.09set /p x=なんか入れろぼけ
0017デフォルトの名無しさん
2011/03/08(火) 10:23:29.57ついに奥義遅延展開を会得したぜ
0018デフォルトの名無しさん
2011/03/08(火) 10:50:06.67@echo off
setlocal enabledelayedexpansion
set 1=お
set 2=め
set 3=で
set 4=と
set 5=う
for /l %%a in (1,1,5) do echo !%%a!
endlocal
exit
0019デフォルトの名無しさん
2011/03/08(火) 16:50:01.750020デフォルトの名無しさん
2011/03/08(火) 17:50:45.23ここの前スレだったか、別板スレの前スレだったかはとても勉強になったよ
でも会得してないので遅延展開使っちゃうけどw
0021デフォルトの名無しさん
2011/03/08(火) 18:28:47.78どういうの?
0022デフォルトの名無しさん
2011/03/08(火) 18:43:43.50@echo off
setlocal
set 1=お
set 2=め
set 3=で
set 4=と
set 5=う
for /l %%a in (1,1,5) do call echo %%%%a%%
endlocal
002320
2011/03/08(火) 19:04:57.04call echo %%%%a%% というようなの知らなかったからインパクト大きかった
その後ググってたら
http://d.hatena.ne.jp/jak-san/20090308/1236501217
見つけて世界が広がった感じ
他にも目からウロコがいくつかあったけど思い出せないw
002421
2011/03/08(火) 20:10:08.46>>23
すげえええええ
call使えばもう1段階変数が外せるのか
てかcallの処理ってこんな風になってたんだね
まさに目から鱗だ
でも少し見にくいからやはり遅延展開!!の方が見やすいかも・・・
0025デフォルトの名無しさん
2011/03/08(火) 20:38:42.712005-03-10
ttp://otnx.jp/CMD/コマンド別/call/
0026デフォルトの名無しさん
2011/03/08(火) 20:47:40.50ttp://d.hatena.ne.jp/otn/20040227
0027デフォルトの名無しさん
2011/03/08(火) 20:57:08.220028デフォルトの名無しさん
2011/03/08(火) 21:35:00.23引き渡してるパラメータはログ主力すると、正しく渡されてるようです。
0029デフォルトの名無しさん
2011/03/08(火) 22:33:31.13set o=me
set me=de
set de=to
set to=u
set u=おめでとう
for /f %%A in ( 'call echo %%!%o%!%%' ) do call echo %%!%%A!%%
endlocal
0030デフォルトの名無しさん
2011/03/08(火) 23:30:00.51windowsでBroken pipeなんて出るの?
まぁ、文字通りパイプが壊れてるんじゃないの?
オプションって言うよりは、入出力関係で不正な操作が起きるんじゃない?
0031デフォルトの名無しさん
2011/03/09(水) 02:30:08.73バッチを読んでみた。
とりあえずバッチファイルを実行してみた、結果が表示された。
もう一度バッチを読み直してみた。
もう君がなにをしているのか訳がわからないよ。
0032デフォルトの名無しさん
2011/03/09(水) 04:52:28.96set o=me
set me=de
set de=to
set to=u
set u=omedetou
set omedetou=^^^>^^^>31 説明しても良いが、何故かもう一回展開できてしまって、この理由が全く説明できないから、展開されるタイミングとか勘違いしてるかもしれんが良いか?
for /f %%A in ( 'call echo %%%%!%o%!%%%%' ) do call echo %%!%%A!%%
endlocal
0033デフォルトの名無しさん
2011/03/09(水) 05:06:07.95何か勘違いしてた…
説明できるかもしれんけど、もう少し良く考えてみる
0034デフォルトの名無しさん
2011/03/09(水) 07:00:45.31windowsででちゃってます。入出力関係が問題ですか。
複数のバッチを同時起動してるのが、まずいのかもしれません。
標準入力とか使い回ししてるのかもしれないですね。
0035デフォルトの名無しさん
2011/03/09(水) 07:14:09.84何か変なコマンド呼んでない?
複数起動禁止でスレッドセーフじゃないコマンドとか、そんなパターンじゃないかと…
0036デフォルトの名無しさん
2011/03/09(水) 09:31:03.77閉じたパイプに書き込もうとしたときのエラー。
Windowsでも同じ状態をいうんじゃないのか?
0037デフォルトの名無しさん
2011/03/09(水) 21:01:22.97%for /f %A in ( 'call echo %%!me!%%' ) do call echo %!%A!%
!for /f %A in ( 'call echo %%de%%' ) do call echo %!%A!%
call echo %%de%%
echo %to%
%A=u
%call echo %!u!%
!call echo %omedetou%
%echo ^>^>31
>>31
for /f %%A in ( 'call echo %%%%%%!%o%!%%%%%%' ) do call echo %%!%%A!%%
%for /f %A in ( 'call echo %%%!me!%%%' ) do call echo %!%A!%
!for /f %A in ( 'call echo %%%de%%%' ) do call echo %!%A!%
call echo %%%de%%%
echo %%to%%
%A=%u%
%call echo %!%u%!%
for /f %%A in ( 'call echo %%%%%%%%!%o%!%%%%%%%%' ) do call echo %%!%%A!%%
%for /f %A in ( 'call echo %%%%!me!%%%%' ) do call echo %!%A!%
%call echo %!%%u%%!%
cmd /c call echo %%de%%
to
cmd /c call echo %%%de%%%
u
003837
2011/03/09(水) 21:05:17.09for /f in ('') のコマンドの処理は単純に cmd /c と同じではなくて
%%→% の処理はされずに %環境変数の展開はされる。
ってことで合ってる?
0039デフォルトの名無しさん
2011/03/09(水) 21:16:29.060040デフォルトの名無しさん
2011/03/09(水) 21:18:32.94cmdの標準入力やコマンドラインは違うだろ
0041デフォルトの名無しさん
2011/03/09(水) 21:33:13.64表面的にしか理解していない証拠
0042デフォルトの名無しさん
2011/03/09(水) 21:43:06.290043デフォルトの名無しさん
2011/03/09(水) 21:53:28.63なるほど、コマンドプロンプトで試してみたら
call echo %%de%%
u
call echo %%%de%%%
%u%
となったから>>37と一致したよ
バッチではなくコマンドプロンプトでしてる時と同じ処理になるってことなのか。
ありがとう。
>>39,>>41
そんな煽るだけの誰の役にも立たないクソレスしかつけられないなんて
かわいそうな子なんですね。
0044デフォルトの名無しさん
2011/03/09(水) 22:11:49.57今更ながら気づいた。こういうことか
@echo off
setlocal enabledelayedexpansion
set /p mo=あ、そう。打ちたいなら何か打てば?
echo !%mo!
endlocal
exit /b
0045デフォルトの名無しさん
2011/03/09(水) 22:13:30.35んじゃ、このバッチで復習を
setlocal enabledelayedexpansion
set o=me
set me=de
set de=to
set to=u
set u=omedetou
set omedetou=おめでとう
for /f %%A in ( 'call echo %%^^^!%%%%!%o%!%%%%^^^!%%' ) do call echo %%A
endlocal
0046デフォルトの名無しさん
2011/03/10(木) 10:15:12.01下記のバッチですが、if 文の条件に合わないのに、
なぜか変数 a の値が変わります。なぜでしょうか?
@echo off
set a="ー"
echo BEFORE=%a%
if %a%%a% == """""" set a="X"
echo AFTER=%a%
pause
2行目で変数に "ー" 以外を代入すると、値は変わりません。
"ー" はバッチ変数のダメ文字なんでしょうか?
004746
2011/03/10(木) 10:27:51.06set a="ー"
の末尾のスペースを削除したら動作しました。
もう、さっぱり分かりません。
0048デフォルトの名無しさん
2011/03/10(木) 10:52:15.87004946
2011/03/10(木) 11:19:55.02set a="^ー"
にしたら正常に動きました。
なぜか末尾に半角スペースはダメなようです。
"ー"以外にもエスケープが必要な文字あるんでしょうかね。
実際は変数に何の文字が入るか分からないので、
全部エスケープすりゃいいのかな。
全角文字はやばいのかも。
0050デフォルトの名無しさん
2011/03/10(木) 12:30:25.19forのdelimsとかtokensとか使ってみたらどう?
0051デフォルトの名無しさん
2011/03/10(木) 12:36:43.130052デフォルトの名無しさん
2011/03/10(木) 12:39:50.02005346
2011/03/10(木) 12:51:26.32半角スペース1個ですよ。
IE とかでレスをコピペしたら付くよ。
>>51、>>52
普通そうですよね。
では set a="^ー" で正常に動いた理由は?
005446
2011/03/10(木) 12:55:51.56また、分からなくなってきた。
0055デフォルトの名無しさん
2011/03/10(木) 13:17:15.56005646
2011/03/10(木) 14:19:31.45if "―""―" == """""" echo 等しい
等しい
だめだこりゃ
0057デフォルトの名無しさん
2011/03/10(木) 19:19:48.87等しい
"とか^とか全然関係ないじゃん。
要するにif文の比較には駄目文字が存在するって事で。
ーと―は駄目だね。
0058デフォルトの名無しさん
2011/03/10(木) 19:35:38.130059デフォルトの名無しさん
2011/03/10(木) 19:58:41.010060デフォルトの名無しさん
2011/03/10(木) 20:37:35.38だがWSHはWindows 7だとデフォルトでは無効なんだっけか。
PowerShellを覚えなきゃいかんのかなぁ。
0061デフォルトの名無しさん
2011/03/10(木) 21:58:30.780062デフォルトの名無しさん
2011/03/10(木) 22:31:24.410063デフォルトの名無しさん
2011/03/10(木) 23:02:31.39外人さんにとって、横線は同左なのか?
0064デフォルトの名無しさん
2011/03/10(木) 23:10:43.820065sage
2011/03/10(木) 23:16:28.91まるまる表示されるときがあるんですが、これなんですかね?
バッチの動作は正しいんですが、気持ち悪いです。
0066デフォルトの名無しさん
2011/03/10(木) 23:44:27.22迷惑な仕様だな
0067デフォルトの名無しさん
2011/03/11(金) 01:28:50.41この問題とは違う気がする
この事例だと"コピー"は"コピ?"となってーはワイルドカードみたいになるってこと?それか正規表現?
>>58>>59見ると正規表現っぽいけど
0068デフォルトの名無しさん
2011/03/11(金) 03:53:26.020069デフォルトの名無しさん
2011/03/11(金) 06:42:21.930070デフォルトの名無しさん
2011/03/11(金) 08:28:01.29if not "ゞ"=="々" echo "ゞ"≠"々"
0071デフォルトの名無しさん
2011/03/11(金) 11:26:30.130072sage
2011/03/12(土) 12:29:23.180073デフォルトの名無しさん
2011/03/12(土) 14:08:30.15sync
0074デフォルトの名無しさん
2011/03/12(土) 16:45:25.010075デフォルトの名無しさん
2011/03/13(日) 12:13:23.68失礼しました。
Linuxでのsyncに該当するコマンドがwindowsであります?です。
0076デフォルトの名無しさん
2011/03/13(日) 12:34:12.100077デフォルトの名無しさん
2011/03/13(日) 12:53:26.18http://technet.microsoft.com/en-us/sysinternals/bb897438.aspx
0078デフォルトの名無しさん
2011/03/13(日) 21:27:59.41まさにこれを探してました。ありがとうございます。
0079デフォルトの名無しさん
2011/03/13(日) 23:59:38.64set a="b==c"
if not %a%==%a% echo NOT EQUAL !!
0080デフォルトの名無しさん
2011/03/14(月) 15:01:05.89おまえだけw
0081デフォルトの名無しさん
2011/03/14(月) 16:24:57.67if %a%==%a% echo EQUAL !! だけど?
0082デフォルトの名無しさん
2011/03/14(月) 17:47:04.60教えてくれ>>80の先生
0083デフォルトの名無しさん
2011/03/14(月) 19:18:01.59何度やっても NOT EQUAL !! って表示されるな
古い cmd.exe のバグかね?
0084デフォルトの名無しさん
2011/03/14(月) 20:04:46.64ウチのWinXP(SP3)では何も表示されないな。
ついでに「 echo %a% 」を次の行に追加した場合は「 "b==c" 」と表示された。
0085デフォルトの名無しさん
2011/03/14(月) 20:13:45.30変数の展開が微妙に違うなw
win2k
>if not "b == c"=="b==c" echo NOT EQUAL !!
NOT EQUAL !!
winXP
>if not "b==c" == "b==c" echo NOT EQUAL !!
0086デフォルトの名無しさん
2011/03/14(月) 20:31:25.662kだと == が "" でエスケープされずに最初の == が比較演算子と認識されてるのかな?
スペースの付き方の違いをみるとそう受けとれる
2kの cmd.exe は for にもバグがあるみたいだし結構ずさんなバグが他にもあるのかも
http://otnx.jp/CMD/%A5%D0%A5%B0/
0087デフォルトの名無しさん
2011/03/14(月) 21:54:24.82>スペースの付き方の違いをみるとそう受けとれる
もしそうならあとがコマンドとして実行されてエラーになるだろ?
0088デフォルトの名無しさん
2011/03/15(火) 00:50:09.590089デフォルトの名無しさん
2011/03/15(火) 01:27:18.63@echo off
set b=それは ^^" です。
set c=それは ^^" ではありません。
:x
set a=
set /p a=文字=
if "%a%==%a%" ( echo %b% ) else echo %c%
goto x
0090デフォルトの名無しさん
2011/03/15(火) 01:30:48.75それなら「c"」までがif文となり、その後の「=="b==c" echo NOT EQUAL !!」
が、実行されてエラーになるんジャマイカ?
0091デフォルトの名無しさん
2011/03/15(火) 01:41:19.03not「b」==「c"=="b==c」と解釈してると予想
0092デフォルトの名無しさん
2011/03/15(火) 01:50:38.930093デフォルトの名無しさん
2011/03/15(火) 01:55:32.05それだと>>89は動かない
0094デフォルトの名無しさん
2011/03/15(火) 05:10:10.83手元に2000無いから分からんが、どう動くの?
0095デフォルトの名無しさん
2011/03/15(火) 07:48:06.63>if "z == z" (echo それは " です。 ) else echo それは " ではありません。
それは " ではありません。
文字="
>if "" == "" (echo それは " です。 ) else echo それは " ではありません。
それは " です。
0096デフォルトの名無しさん
2011/03/15(火) 08:45:46.870097デフォルトの名無しさん
2011/03/15(火) 11:37:36.79その結果だけみるとダブルクォーテーションでエスケープ出来ない感じ?
0098デフォルトの名無しさん
2011/03/15(火) 13:11:59.49" が奇数個だとまずい。
" も比較の対象。
0099デフォルトの名無しさん
2011/03/15(火) 17:17:41.230100デフォルトの名無しさん
2011/03/15(火) 18:48:54.300101デフォルトの名無しさん
2011/03/15(火) 22:03:56.890102デフォルトの名無しさん
2011/03/15(火) 22:26:00.310103デフォルトの名無しさん
2011/03/15(火) 22:41:15.800104デフォルトの名無しさん
2011/03/15(火) 23:00:36.57愚かだね。誰もそんな要求してないけど。
0105デフォルトの名無しさん
2011/03/15(火) 23:08:44.93cmd.exeバグだらけなんだけど
0106デフォルトの名無しさん
2011/03/15(火) 23:14:38.460107デフォルトの名無しさん
2011/03/15(火) 23:25:37.560108デフォルトの名無しさん
2011/03/15(火) 23:30:59.080109デフォルトの名無しさん
2011/03/15(火) 23:37:12.840110デフォルトの名無しさん
2011/03/15(火) 23:41:30.73ここにそんな事を書いても無駄
0111デフォルトの名無しさん
2011/03/15(火) 23:48:08.150112デフォルトの名無しさん
2011/03/16(水) 01:49:08.390113デフォルトの名無しさん
2011/03/16(水) 09:27:16.44\ 丶 i. | / ./ /
\ ヽ i. .| / / /
\ ヽ i | / / /
\
た わ し で す -‐
ー
__ __VV
>:::::::::::::::::::: <
_>':::::::: ::::::::<
,>'::::: ::::::::<
>::::::: :::::::::<
>;;::::: :::::::<
>i::::::::::::::ゞ<
'ヘトハト! ‐-
/
/ ヽ \
/ 丶 \
/ / / | i, 丶 \
/ / / | i, 丶 \
0114デフォルトの名無しさん
2011/03/16(水) 10:57:44.780115デフォルトの名無しさん
2011/03/16(水) 23:32:55.60初期化って概念が、そもそも無いかもしれないですが。
0116デフォルトの名無しさん
2011/03/17(木) 01:18:24.112>標準エラー
0117デフォルトの名無しさん
2011/03/17(木) 15:43:02.49初期化しないと生ずる不具合を教えてください
具体的にお願いします
0118デフォルトの名無しさん
2011/03/17(木) 16:58:13.740119デフォルトの名無しさん
2011/03/17(木) 20:10:10.610120デフォルトの名無しさん
2011/03/17(木) 20:36:18.44違うか
0121デフォルトの名無しさん
2011/03/17(木) 22:02:21.390122デフォルトの名無しさん
2011/03/17(木) 22:02:55.980123デフォルトの名無しさん
2011/03/18(金) 00:05:53.420124デフォルトの名無しさん
2011/03/18(金) 22:45:57.66環境は
Windows XP Service Pack 3
です。
sample.batという名のバッチファイルを作って、その挙動を
1.commandstring = "C:\sample_prgm.exe"
のようにcommandstringという変数に右辺の文字列を代入する。
(バッチファイル中に直接書きこむ)
2.commandstringが有効なパスであるならば
そのパスをコマンドとして(関連付けどおりに)実行させる。
(つまりコマンドプロンプトにcommandstringの中身を打ち込んだのと同じ動作をさせる)
というふうにしたいのですが、どう書けばよろしいでしょうか?
Pythonで言うなら
#######################
import os, os.path
commandstring = "C:\sample_prgm.exe"
if os.path.exists(commandstring) :
os.system(commandstring)
#######################
です。
これをbatファイルでやりたいのです。
よろしくお願いいたします。
0125デフォルトの名無しさん
2011/03/19(土) 00:14:09.04if exist %commandstring% %commandstring%
0126デフォルトの名無しさん
2011/03/19(土) 00:40:25.87スペースぐらいはケアした方が良いような・・・
0127デフォルトの名無しさん
2011/03/19(土) 00:42:01.800128デフォルトの名無しさん
2011/03/19(土) 11:10:36.49お聞きしたいことはバッチファイルで出力されたログを上手く取るコツです
今はこのように非効率だとおもいながらもバッチファイルで標準出力やエラー出力をlog.txtに追加しています
(このteeはここではパイプで渡された入力をファイルに追記するために使っています)
( NanikaSuruA.exe 2>&1) | tee -a log.txt
( NanikaSuruB.exe 2>&1) | tee -a log.txt
以下続く
ただこの方法ではコマンドごとに記述することが手間と
標準出力を利用したいときにエラーが記録しづらく困っています。
例えば
TokubetuNaNanika.exe > output.txt
TokubetuNaNanika.exe は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
このようなときにパスが通っていないエラーが記録されていませんでした
このときはrun_test.batを作りその中で処理したいbatを呼び出し表示されるものをログに追記するとよさそうに見えますが
一つのバッチファイルのにつき、さらにもう一つのログをとるためのラッパーのためのバッチファイルを用意することになります
test.bat | tee -a log.txt
もう少しいい方法はないかと質問させていただきました
0129デフォルトの名無しさん
2011/03/19(土) 11:40:36.48TokubetuNaNanika.exe > output.txt 2>> log.txt
0130124
2011/03/19(土) 14:34:32.99ありがとうございます!
>>126
今後スペースが必要となったらその時自分で勉強して手を加えようとおもいます!
ありがとうございました。
0131デフォルトの名無しさん
2011/03/19(土) 15:56:21.84再帰
if defined flag goto main
setlocal
set flag=1
%0 2>&1 | tee -a log.txt
goto :eof
:main
0132デフォルトの名無しさん
2011/03/19(土) 18:57:36.42ラッパー(test.bat)の中身
NanikaSuruA.exe
NanikaSuruB.exe
TokubetuNaNanika.exe > output.txt
ラッパーの実行方法
test.bat 2>&1 | tee -a log.txt
0133128
2011/03/20(日) 15:35:57.84teeというコマンドを使っていたのはファイルと画面にも表示したいのをさっぱり忘れていました
リダイレクトの方法>>129も含めて試してみます
>>129
なるほど、、
自己再帰する手があるのですね
>>132
用意する手間さえどうにかすればラッパーが一番楽そうですね
0134デフォルトの名無しさん
2011/03/23(水) 11:49:37.29という内容のバッチファイルを書いて実行すると、期待したどうさに
ならずに、コマンドプロンプトのロゴが出てしまいます。
解決策をご教示ください。
よろしくお願いします。
0135デフォルトの名無しさん
2011/03/23(水) 12:20:56.260136デフォルトの名無しさん
2011/03/23(水) 16:49:02.50/Bなんか使うな必要ないだろ
0137デフォルトの名無しさん
2011/03/23(水) 20:44:39.82無理すんなw
0138デフォルトの名無しさん
2011/03/23(水) 21:33:06.74ありがとうございます。startの引数を誤解していました。
0139デフォルトの名無しさん
2011/03/23(水) 21:47:00.230140デフォルトの名無しさん
2011/03/24(木) 00:51:32.620141デフォルトの名無しさん
2011/03/24(木) 00:52:53.550142デフォルトの名無しさん
2011/03/24(木) 02:37:09.200143デフォルトの名無しさん
2011/03/24(木) 10:43:40.20最初/bを使ってた時の問題がロゴが出る事だけだったんなら
止まることは何の問題にもなってなかったんじゃ?
0144デフォルトの名無しさん
2011/03/24(木) 13:13:54.960145デフォルトの名無しさん
2011/03/24(木) 14:07:08.91わからんから説明してくれよ
0146デフォルトの名無しさん
2011/03/24(木) 14:14:35.95コマンドプロンプトが出てしまいます。
0147デフォルトの名無しさん
2011/03/24(木) 15:27:19.690148デフォルトの名無しさん
2011/03/24(木) 19:12:04.020149デフォルトの名無しさん
2011/03/24(木) 20:38:56.650150デフォルトの名無しさん
2011/03/24(木) 21:07:30.890151デフォルトの名無しさん
2011/03/24(木) 21:08:50.98しかし
このようにお願いします
ファイルの場所
rscript\c1.vbs
↑実行ファイル
rscript\tool\aw1.bat
↑vbsから実行されるbatファイル
0152デフォルトの名無しさん
2011/03/24(木) 21:26:23.29プロンプトを非表示でbatを実行するためのvbsって微妙にスレチな気も…
c1.vbs
WScript.CreateObject("WScript.Shell").Run "tool\aw1.bat", 0
0153デフォルトの名無しさん
2011/03/25(金) 01:41:16.90どうすればうまくいくかご教授お願い致します。環境はWindowsXP SP3です。
0154デフォルトの名無しさん
2011/03/25(金) 01:54:56.010155デフォルトの名無しさん
2011/03/25(金) 05:47:40.05別プロセスのVBS立ち上げてSendKeys使えばOK
0156デフォルトの名無しさん
2011/03/25(金) 18:23:54.67あほにはできないw
0157デフォルトの名無しさん
2011/03/25(金) 21:00:47.160158デフォルトの名無しさん
2011/03/26(土) 07:56:35.56その1バイト分の0x1aをバイナリエディタで入力して
適当なファイル名で保存し、入力リダイレクトに使うってのはどう?
0159デフォルトの名無しさん
2011/03/26(土) 11:59:31.16taskkillでプログラムを終了→プログラムを起動
との事ですが全くわかりません…良ければご教示お願い致します
0160デフォルトの名無しさん
2011/03/26(土) 14:39:28.04まぁスレ違いだけど
0161デフォルトの名無しさん
2011/03/26(土) 16:06:06.56ttp://scripting.cocolog-nifty.com/blog/2008/11/post-45b1.html
0162デフォルトの名無しさん
2011/03/26(土) 16:08:00.90@echo off
taskkill /im SetPoint.exe
start SetPoint.exe
0163デフォルトの名無しさん
2011/03/26(土) 18:33:29.390164デフォルトの名無しさん
2011/03/26(土) 19:22:33.87ありがとうございます
ですがすいません終了しなかったり終了しても再起動してくれないことが多いですorz
0165デフォルトの名無しさん
2011/03/26(土) 19:29:55.33あいだに
sleep 10
か
ping -n 10 localhost
入れてみ
0166デフォルトの名無しさん
2011/03/26(土) 19:45:49.77ありがとうございます
ですが言う事聞きません…
再起動の方はディレイかければいけそうです
1/30回しか正常に動作してませんので検証不足ですがorz
0167デフォルトの名無しさん
2011/03/26(土) 19:47:44.88http://about-threats.trendmicro.com/ArchiveMalware.aspx?language=jp&name=WORM_RBOT.BNV
0168デフォルトの名無しさん
2011/03/26(土) 20:02:31.70taskkill /im SetPoint.exe
ping -n 10 localhost
taskkill /f /im SetPoint.exe
start SetPoint.exe
0169デフォルトの名無しさん
2011/03/26(土) 20:08:54.362000の時からあるなんて知らなかったorz
0170デフォルトの名無しさん
2011/03/26(土) 20:09:50.35ありがとうございます
/f付けとくといけるみたいですがタスクトレイにアイコンが残ってしまいます
強制終了以外に何かいい案ないでしょうか
あと待ち時間は
sleep 10
ping -n 10 localhost
以外にありますか?
0171デフォルトの名無しさん
2011/03/26(土) 20:21:29.55timeout /t 10
0172デフォルトの名無しさん
2011/03/26(土) 22:02:18.81ありがとうございます
色々ググッたんですがトレイにアイコン残るのは仕様みたいですね
これで使わせてもらいます
ご回答いただいた皆様ありがとうございました
0173デフォルトの名無しさん
2011/03/27(日) 12:31:03.80録画機から自動エンコしたファイルをこのバッチからNASに飛ばすようにしてるんですが
どうしても同名ファイルがあるとyes/noで止まったままなんです
これをスキップして処理を継続することは出来ないのでしょうか
0174デフォルトの名無しさん
2011/03/27(日) 12:36:41.330175デフォルトの名無しさん
2011/03/27(日) 12:38:13.430176デフォルトの名無しさん
2011/03/27(日) 15:05:20.530177デフォルトの名無しさん
2011/03/27(日) 15:08:14.78とかすりゃいいんじゃねーの
0178デフォルトの名無しさん
2011/03/27(日) 15:23:45.420179デフォルトの名無しさん
2011/03/27(日) 15:39:10.83古いファイルなんか残してどうすんの
0180デフォルトの名無しさん
2011/03/27(日) 16:37:33.49だったら存在確認してリネームじゃなく単純に送らないだけだが。
ts\*.mp4って送り先からてっきり色々パラメータ変えてエンコした結果で
同名ファイルがあるものだと思ってたわ。
上書きしちゃ比較にならんからその線も除外してた。
0181デフォルトの名無しさん
2011/03/27(日) 17:48:00.250182デフォルトの名無しさん
2011/03/27(日) 18:54:37.00ここはそういう板じゃねーんだよ。ソフト板で頑張りな。
0183デフォルトの名無しさん
2011/03/27(日) 19:54:02.73情報不足ですいません
>>180さんの言う通り
受け側の同名ファイルの中身は別物ですので、送り側のファイルに置き換わってしまっては困ります
そこはスキップして後々手動でリネームする予定でした
ですので
bat実行
A.mp4←コピー済み
B.mp4←コピー済み
C.mp4(このファイルは転送先に既に同名ファイルが存在する、中身は別) 上書きyes/no選択肢が出て止まったまま
D.mp4←このファイルはまだコピーされていない
E.mp4←このファイルはまだコピーされていない
このC.mp4の判断をスキップしたいのです
調べ限りバッチではどう記述していいかわかりませんでした
0184デフォルトの名無しさん
2011/03/27(日) 20:03:03.650185デフォルトの名無しさん
2011/03/27(日) 20:17:10.23xcopy source destination /d /a /u /l > list.txt
でリネーム対称ファイル名を取得して for /f 文でリネームするとか。
0186デフォルトの名無しさん
2011/03/27(日) 20:59:05.720187デフォルトの名無しさん
2011/03/27(日) 21:00:09.52小学生は早く寝ろ
0188デフォルトの名無しさん
2011/03/27(日) 21:29:08.360189デフォルトの名無しさん
2011/03/28(月) 16:27:24.43それ、/y スイッチを追加しないと途中で止まる
コピー元の同名ファイルは、A属性を一時的にクリアすればコピーされない
0190デフォルトの名無しさん
2011/03/28(月) 16:40:20.060191デフォルトの名無しさん
2011/03/28(月) 17:27:45.44あとは copy でも何でもいいだろ
0192デフォルトの名無しさん
2011/03/28(月) 17:29:23.030193デフォルトの名無しさん
2011/03/28(月) 17:38:36.30社会経験ゼロの厨房がw
そんな物が使えれば誰も苦労せんわ、馬鹿が。
0194デフォルトの名無しさん
2011/03/28(月) 17:39:07.38似たような名前でわかりにくくなるだろ
結局、自分で変更することになるんじゃ?
0195デフォルトの名無しさん
2011/03/28(月) 17:41:30.810196デフォルトの名無しさん
2011/03/28(月) 17:55:44.210197デフォルトの名無しさん
2011/03/28(月) 18:47:54.29質問者が使えるかどうかは知らん。
0198デフォルトの名無しさん
2011/03/28(月) 19:18:05.420199デフォルトの名無しさん
2011/03/28(月) 19:23:17.000200デフォルトの名無しさん
2011/03/28(月) 22:22:58.43使うことを禁じられてんだよ
まともな会社で働いてから物言え糞ニート
0201デフォルトの名無しさん
2011/03/28(月) 22:30:09.14ヘリコプターで水かけてたのはいったい何だったんだろう
馬鹿の指示で動く兵隊は大変だな
0202デフォルトの名無しさん
2011/03/28(月) 22:32:34.35http://raicho.2ch.net/test/read.cgi/newsplus/1301313557/
0203デフォルトの名無しさん
2011/03/28(月) 22:34:22.73会社も大変だなw
0204デフォルトの名無しさん
2011/03/28(月) 22:46:05.940205デフォルトの名無しさん
2011/03/28(月) 23:15:15.41コピー先に日付のディレクトリ作って、そこにコピーすれば良いじゃん
0206デフォルトの名無しさん
2011/03/29(火) 00:10:15.730207デフォルトの名無しさん
2011/03/29(火) 01:30:24.010208デフォルトの名無しさん
2011/03/29(火) 08:33:43.000209デフォルトの名無しさん
2011/03/29(火) 10:34:01.78だから単純に
for /f "delims=" %%i in ('dir /b/aa V:\ts\*.mp4') do if not exist "\\nas\contents\%%~nxi" xcopy "%%~i" "\\nas\contents\%%~nxi" /M
こんなんでいいだろ。
俺だったら同名存在したら連番なり日付なり追加リネームしてコピーってのも
バッチ内でやると思うけど。
0210デフォルトの名無しさん
2011/03/29(火) 10:51:17.00隠し属性とシステム属性も除外して'dir /b/aa-h-s V:\ts\*.mp4'だな
逆にxcopyのオプションだけで対応するのなら、forの拡張機能は使わないな
0211デフォルトの名無しさん
2011/03/29(火) 11:34:28.350212デフォルトの名無しさん
2011/03/29(火) 11:55:37.81転送元がmp4な時点でシステム属性とか隠し属性なんて無いと思うけどw
0213デフォルトの名無しさん
2011/03/29(火) 12:08:32.89録画のシステムが糞なら録画中のファイルがmp4で隠し属性になる可能性あり
0214デフォルトの名無しさん
2011/03/29(火) 12:13:02.400215デフォルトの名無しさん
2011/03/29(火) 16:06:21.240216デフォルトの名無しさん
2011/03/29(火) 17:27:08.460217デフォルトの名無しさん
2011/03/29(火) 17:55:35.590218デフォルトの名無しさん
2011/03/29(火) 18:08:10.990219デフォルトの名無しさん
2011/03/29(火) 18:51:24.99起動時の設定は最小化
0220デフォルトの名無しさん
2011/03/29(火) 18:52:14.500221デフォルトの名無しさん
2011/03/29(火) 18:52:22.960222デフォルトの名無しさん
2011/03/29(火) 18:53:32.290223デフォルトの名無しさん
2011/03/29(火) 18:57:11.820224デフォルトの名無しさん
2011/03/29(火) 19:00:12.020225デフォルトの名無しさん
2011/03/29(火) 19:01:55.01cmd.exe /c start /b "%1"
に変えればよくね?
0226デフォルトの名無しさん
2011/03/29(火) 19:04:52.250227デフォルトの名無しさん
2011/03/29(火) 19:09:43.970228デフォルトの名無しさん
2011/03/29(火) 19:11:03.320229デフォルトの名無しさん
2011/03/29(火) 19:12:20.64よくねえ
0230デフォルトの名無しさん
2011/03/29(火) 19:16:29.59なのに変だね
0231デフォルトの名無しさん
2011/03/29(火) 19:19:32.670232デフォルトの名無しさん
2011/03/29(火) 19:29:20.70よくねえ
ちったぁ試してから言えよ
役立たずばっか
0233デフォルトの名無しさん
2011/03/29(火) 19:34:37.910234デフォルトの名無しさん
2011/03/29(火) 20:50:36.040235デフォルトの名無しさん
2011/03/29(火) 20:56:01.720236デフォルトの名無しさん
2011/03/29(火) 21:26:26.84だよ
0237デフォルトの名無しさん
2011/03/29(火) 22:17:46.12だな
0238デフォルトの名無しさん
2011/03/29(火) 22:52:37.67mshta.exe vbscript:close(CreateObject("WScript.Shell").Run("""%1""",0))
だな
0239デフォルトの名無しさん
2011/03/29(火) 23:03:31.350240デフォルトの名無しさん
2011/03/30(水) 00:15:50.37>>236 は >>231
>>237 と >>238 は 動かん
0241デフォルトの名無しさん
2011/03/30(水) 00:31:59.080242デフォルトの名無しさん
2011/03/30(水) 01:19:39.53>>240
mshta.exe vbscript:close(CreateObject("WScript.Shell").Run("cmd.exe /c ""%1""",0))
ただし>>241
>>241
cmd.exe /c start /min cmd.exe /c "%1" %*
ただし>>240
外部ファイルを作れば別だが、どっちもと言うわけにはいかんな
0243デフォルトの名無しさん
2011/03/30(水) 10:20:08.25WScript C:\callbat.vbs %*
-- C:\callbat.vbs --
strCmd = "cmd.exe /c"
For i=0 To WScript.Arguments.Length - 1
strBuf = WScript.Arguments.Item(i)
If InStr( 1, strBuf, " ", 1 ) = 0 Then
strCmd = strCmd + " " + strBuf
Else
strCmd = strCmd + " " + """" + strBuf + """"
End If
Next
WScript.CreateObject("WScript.Shell").Run strCmd, 0
0244デフォルトの名無しさん
2011/03/30(水) 16:45:56.57cmd.exe /c
のショートカット作って
c:\hoge.lnk "%1" %*
でいいんじゃね
0245デフォルトの名無しさん
2011/03/31(木) 02:37:30.94もういいだろっ…
こんな…ゲイツの気まぐれにっ…!!!!
いっぱい!!!!いっぱい(SEが)死んだんだぞ!!!!
0246244
2011/03/31(木) 02:42:04.35「何が起こっても不思議じゃない」
という覚悟でもなければもう書けない。
…マジで…ゲイツ氏ね…
0247デフォルトの名無しさん
2011/03/31(木) 04:09:00.19いみふ
大体詐称すな
0248デフォルトの名無しさん
2011/03/31(木) 04:51:37.89ぎりぎり外へ押しやれば起動しても見えなくなるぞw
0249デフォルトの名無しさん
2011/03/31(木) 08:07:57.340250デフォルトの名無しさん
2011/03/31(木) 08:20:55.050251デフォルトの名無しさん
2011/03/31(木) 16:57:38.69コピー先のリストをdirとかで取って/EXCLUDEに指定すればどうかな?
0252デフォルトの名無しさん
2011/03/31(木) 18:57:48.740253デフォルトの名無しさん
2011/03/31(木) 22:12:32.06いつ、そんな条件が追加されたんだ?
0254デフォルトの名無しさん
2011/04/01(金) 19:26:50.480255デフォルトの名無しさん
2011/04/01(金) 22:46:47.79下のバッチで、1個目と2個目の echo の表示が
ユニコード文字があると化けるんだけど
仕様なの?
for /f %%i in ('dir /b') do (
echo "%%i"
echo "%%~i"
echo "%%~nxi"
)
0256デフォルトの名無しさん
2011/04/02(土) 00:46:19.04大概の文字はユニコードだけど?
0257デフォルトの名無しさん
2011/04/02(土) 01:09:33.230258デフォルトの名無しさん
2011/04/02(土) 01:13:41.770259デフォルトの名無しさん
2011/04/02(土) 01:18:58.42echo "%%i"
echo "%%~i"
echo "%%~nxi"
)
なら化けんよ
0260デフォルトの名無しさん
2011/04/02(土) 01:35:40.37ユニコード特有の文字のことでした。
0261デフォルトの名無しさん
2011/04/02(土) 01:45:47.51だから意味不明だと言っとるだろがぼけ
0262デフォルトの名無しさん
2011/04/02(土) 01:54:13.530263デフォルトの名無しさん
2011/04/02(土) 01:56:31.100264デフォルトの名無しさん
2011/04/02(土) 01:57:21.570265デフォルトの名無しさん
2011/04/02(土) 01:58:06.190266デフォルトの名無しさん
2011/04/02(土) 01:59:25.930267デフォルトの名無しさん
2011/04/02(土) 02:00:31.99ユニコード制御文字
0268デフォルトの名無しさん
2011/04/02(土) 02:02:30.290269デフォルトの名無しさん
2011/04/02(土) 02:06:34.420270デフォルトの名無しさん
2011/04/02(土) 02:09:27.91これってカレントが強制的に%WINDIR%にされてるのかね?
> nul で抑制できないけど、取り合えずバッチは動いてるみたい
支障が出る or 出そうな状況ってありますか?
0271デフォルトの名無しさん
2011/04/02(土) 02:10:04.30確かに。だが、ボケはユニコード制御文字のことを言ってるのか?
0272デフォルトの名無しさん
2011/04/02(土) 02:12:29.78相対パス使ってると支障でるんじゃね?
取り合えずUNC使う時はpushdとpopd使うようにしてる。
0273270
2011/04/02(土) 03:00:19.58なるほど<相対パス
今pushd/popdで試してみたら、やっぱ起動時のカレントは
C:\Windowsになってた@Win7
バッチ内で何かの実行ファイルをキックするような内容程度なら、
全部絶対パスで渡してやれば特に問題ないのかな
0274デフォルトの名無しさん
2011/04/02(土) 05:30:09.48仕様ってどういう仕様?
0275デフォルトの名無しさん
2011/04/02(土) 06:19:58.700276デフォルトの名無しさん
2011/04/02(土) 07:48:37.830277デフォルトの名無しさん
2011/04/02(土) 08:09:08.880278デフォルトの名無しさん
2011/04/02(土) 08:26:15.20>>209みたいなのが誤動作する可能性があるんだよボケ
0279デフォルトの名無しさん
2011/04/02(土) 08:46:12.840280デフォルトの名無しさん
2011/04/02(土) 09:22:43.72仕様だ。
0281デフォルトの名無しさん
2011/04/02(土) 12:48:13.93もう古い時代のバッチに拘るな
0282デフォルトの名無しさん
2011/04/02(土) 16:20:37.26拘ってるのは、知識もスキルもない窓際管理職と掃き溜め管理部門だけ
0283デフォルトの名無しさん
2011/04/02(土) 17:33:13.38cmd /u で実行したら化けないとは言ってないよボケ
/aと/uは出力を変えるだけだボケ
入力はa固定だボケ
0284デフォルトの名無しさん
2011/04/02(土) 17:35:32.15>>277はユニコード特有の文字か?ボケ
0285デフォルトの名無しさん
2011/04/02(土) 17:41:43.990286デフォルトの名無しさん
2011/04/02(土) 18:55:32.210287デフォルトの名無しさん
2011/04/02(土) 19:40:44.780288デフォルトの名無しさん
2011/04/03(日) 17:50:43.520289デフォルトの名無しさん
2011/04/03(日) 17:59:29.900290デフォルトの名無しさん
2011/04/03(日) 18:14:08.41『バッチファイルの内容』
----------------ここから
myprogram %1
----------------ここまで
myprogramというのは自作のプログラムです。」
このプログラムに引数を渡したいのですが、引数が「aaa bbb ccc」というふうに3つのキーワードを入れると、バッチファイルではaaaしか認識しません。
myprogram %1 %2 %3と書くことで取得できるのですが、引数に入れるキーワードの数は2個以上でいつも不規則な数になってます。
myprogram "%1"と書いても取得できませんでした
どのようにして%1のみで全てを取得する事ができますでしょうか?
0291デフォルトの名無しさん
2011/04/03(日) 18:25:59.37"%~f1" でOK。(ただしWindows95/98/Meでは不可)
0292デフォルトの名無しさん
2011/04/03(日) 18:33:29.11何言ってるか分からんよボケ
0293デフォルトの名無しさん
2011/04/03(日) 18:35:37.020294デフォルトの名無しさん
2011/04/03(日) 18:37:21.02ありがとうございます;;大変助かりました
0295デフォルトの名無しさん
2011/04/03(日) 19:07:54.370296デフォルトの名無しさん
2011/04/03(日) 19:23:07.990297デフォルトの名無しさん
2011/04/04(月) 10:38:51.40ai-1234_ueo.text
変換後
aiueo.text
0298デフォルトの名無しさん
2011/04/04(月) 12:55:20.48set a=ai-1234_ueo.text
echo %a:-1234_=%
「-」〜「_」までなら
set a=ai-1234_ueo.text
set b=%a:*-=%
call echo %%a:-%b%=%%%%a:*_=%%
0299デフォルトの名無しさん
2011/04/04(月) 13:09:46.410300デフォルトの名無しさん
2011/04/04(月) 21:47:14.35.batを並列で動かそうとしています。
例えば、
body.bat
rem 動かない
start “c:\a.bat“
start “c:\b.bat“
上記なら動かない
下記なら動く
body.bat
rem 動く
start ““ “c:\a.bat“
start ““ “c:\b.bat“
startの後のダブルクォーテーションが必要な理由を教えていただきたいです。
メンドクサイようでしたら、解説サイトを教えて頂けませんか。
宜しくお願いします。
0301デフォルトの名無しさん
2011/04/04(月) 22:06:00.22start /?
0302デフォルトの名無しさん
2011/04/04(月) 22:10:23.820303デフォルトの名無しさん
2011/04/04(月) 23:02:39.82START ["タイトル"] [/Dパス] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [コマンド/プログラム]
[パラメータ]
タイトルは省略可能。ただし、プログラム名が空白を含む等で " " で囲まなければならない場合、
start "C:\Program Files\prog1\prog1.exe"
と書くと、これがタイトルとみなさる。
0304デフォルトの名無しさん
2011/04/04(月) 23:37:03.230305デフォルトの名無しさん
2011/04/05(火) 22:25:31.81start /? すいません、初歩でした。
上記を確認後に改めて、中身を確認すると、
a.batは、自作でtitleは書いていない。
b.batは、他人が書いたバッチでtitleを書いていました。
b.batは、タイトル書いているのに、
body.bat
start ““ “c:/b.bat“
と書かないと動きませんでした。
この時のウインドウのタイトルを確認し忘れました。
ウインドウのタイトルがどうなってるのかは、明日、確認します。
start で設定するタイトル ““ とバッチ内で設定するtitleは、設定が違うのでしょうか?
相次ぐ質問で、申し訳御座いません。
お返事は、早くとも明日のこのぐらい時間か、明後日の朝になりますが、お付き合いお願いします。
0306デフォルトの名無しさん
2011/04/05(火) 22:36:40.350307デフォルトの名無しさん
2011/04/05(火) 23:00:48.68タイトルそのものは全然関係無いってのに。
0308デフォルトの名無しさん
2011/04/06(水) 01:27:44.04気に入らない回答には罵倒して煽る、みたいなのがたくさんいた昔の方が
健全だったように思える
0309デフォルトの名無しさん
2011/04/06(水) 04:05:22.68お断りします。
0310デフォルトの名無しさん
2011/04/06(水) 07:35:16.89ここが何なのかも分からずに。
0311デフォルトの名無しさん
2011/04/06(水) 13:25:39.50こういうコマンドの使い方も知らずに適当な事やるやつってなんなんだろうね。
0312デフォルトの名無しさん
2011/04/06(水) 13:57:29.48["タイトル"] [コマンド/プログラム]
は位置パラメタなんだよ
0313デフォルトの名無しさん
2011/04/06(水) 14:07:28.74ttp://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/start.shtml
のライタ並だね 自称itpro
0314デフォルトの名無しさん
2011/04/06(水) 15:21:02.650315デフォルトの名無しさん
2011/04/06(水) 16:02:48.17| 釣れまっか? ,
\ ,/ヽ
 ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ,/ ヽ
∧_∧ ∧∧ ,/ ヽ
( ´∀`) (゚Д゚,,),/ ヽ
( ) (| つ@ ヽ
| | | ___ 〜| | ヽ
(__)_) |――|. ∪∪ ヽ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ヽ
/⌒\/⌒\/⌒\/⌒\|彡~゚ ゜~ ~。゜ ~ ~ ~ ~~ ~ ~~ ~ ~~ ~~ ~~
⌒\/⌒\/⌒\/⌒\/⌒\彡 〜 〜〜 〜〜 〜〜 〜 〜
0316デフォルトの名無しさん
2011/04/06(水) 20:22:13.460317デフォルトの名無しさん
2011/04/06(水) 23:23:32.93%と&でバグるのはやっぱ防げないかね
0318デフォルトの名無しさん
2011/04/07(木) 00:00:35.47@echo off
cls
set /p asdgf=
echo echo %asdgf%
echo %asdgf%
echo echo "%asdgf%"
echo "%asdgf%"
@echo on
set asdgf=%asdgf:&=^^^&%
@echo off
echo echo %asdgf%
echo %asdgf%
echo echo "%asdgf%"
echo "%asdgf%"
0319デフォルトの名無しさん
2011/04/07(木) 00:33:38.40!の遅延展開を使えばええだがや
0320デフォルトの名無しさん
2011/04/07(木) 00:34:01.76ファイル名に%や&が入ってるときに
それを取り込もうとしてエラー出てた。
0321デフォルトの名無しさん
2011/04/07(木) 01:15:03.79for /F "delims=" %%f in ('dir /b *.txt') do call :main "%%f"
goto :EOF
:main
set fname=%~n1
echo %fname%
取り込みファイル名:%abc.txx
結果:abc
0322デフォルトの名無しさん
2011/04/07(木) 02:15:02.22!の遅延展開を使えばええだがや
0323デフォルトの名無しさん
2011/04/07(木) 03:08:33.980324デフォルトの名無しさん
2011/04/07(木) 09:00:05.420325デフォルトの名無しさん
2011/04/07(木) 09:24:06.60start "%cd%"とかでいいんじゃねーの
0326デフォルトの名無しさん
2011/04/07(木) 09:53:33.10遅延展開も試しが無理だったがや
0327デフォルトの名無しさん
2011/04/07(木) 10:18:30.880328デフォルトの名無しさん
2011/04/07(木) 10:20:26.53setlocal enabledelayedexpansion
for /F "delims=" %%f in ('dir /b *.txt') do call :main "%%f"
goto :EOF
:main
set fname=%~n1
echo !fname!
endlocal
これでもだめだった。
for do~のあとにset fnameとやればできるんだが
do callで遅延展開でできないのは謎
0329デフォルトの名無しさん
2011/04/07(木) 10:21:03.65誤字五時
0330デフォルトの名無しさん
2011/04/07(木) 11:24:10.03ちゃんと訂正しなよレス欲しいんなら
@echo off
setlocal enabledelayedexpansion
for /F "delims=" %%f in ('dir /b *.txt') do (
set "a=%%f"
set "a=!a:%%=%%%%!"
call :main "!a!"
)
pause
endlocal
goto :EOF
:main
set "fname=%~n1"
echo "!fname!"
0331デフォルトの名無しさん
2011/04/07(木) 12:04:03.11すまんかった。
そしてサンクス
0332デフォルトの名無しさん
2011/04/07(木) 12:14:37.03a!b!c.txt とかが ac になったり
0333デフォルトの名無しさん
2011/04/07(木) 17:00:19.67for /f "delims=" %%f in ('dir /b *.txt') do set "a=%%f" & call :b
pause & exit
:b
setlocal enabledelayedexpansion
set "a=!a:%%=%%%%!"
endlocal & call :main "%a%"
goto :eof
:main
set "fname=%~n1"
echo "%fname%"
"!" に対応したところで完全じゃない(>>278 とか)
0334デフォルトの名無しさん
2011/04/07(木) 17:07:49.53やりおる
0335デフォルトの名無しさん
2011/04/07(木) 17:18:42.380336デフォルトの名無しさん
2011/04/07(木) 23:35:09.90そこまでしてなにがしたいんだか
0337デフォルトの名無しさん
2011/04/08(金) 00:27:12.19小学生は早く寝ろ
0338デフォルトの名無しさん
2011/04/08(金) 08:08:51.13echo "%fname:^^=^%"
0339デフォルトの名無しさん
2011/04/08(金) 19:41:11.92フォルダの位置はc:\code\2011\にしたいので
chcp 65001
cd c:\code\2011\
と書いてbatファイルにしたのですが画面が表示されてすぐきえてしまいます
どのようにしたら普通にDOSを立ち上げたときの状態に上のコマンドを実行した状態にできるのでしょうか?
0340デフォルトの名無しさん
2011/04/08(金) 20:39:41.20cd c:\code\2011\
cmd /k chcp 65001
0341デフォルトの名無しさん
2011/04/08(金) 21:40:22.49のショートカットにすればよい
0342デフォルトの名無しさん
2011/04/08(金) 22:17:39.23すれ違い
0343デフォルトの名無しさん
2011/04/08(金) 22:47:52.49使わせていただきます
0344デフォルトの名無しさん
2011/04/10(日) 11:01:48.83パスを拡張子だけ抜いて指定場所に書き込みたいのですが、
\の処理がうまくいきません どう記述するのが正しいのでしょうか?
perl -Mencoding=cp932 -pe s/"Filedpn"/"%~d1\%~p1\%~n1"/ template.avs > "%~n1.avs"
0345デフォルトの名無しさん
2011/04/10(日) 11:18:52.680346デフォルトの名無しさん
2011/04/10(日) 11:20:42.05おおう・・・ 実はperlのスレから誘導されてきたんです
どうしたものか・・・
0347デフォルトの名無しさん
2011/04/10(日) 11:55:33.60\ → \\
0348デフォルトの名無しさん
2011/04/10(日) 12:11:07.500349デフォルトの名無しさん
2011/04/10(日) 12:36:51.40単純に"Filedpn" → "%~d1%~p1%~n1" なら、
"s/\"Filedpn\"/\"%%~d1%%~p1%%~n1\"/"
0350デフォルトの名無しさん
2011/04/12(火) 22:20:20.51if exist file:stream (echo Y) else echo N
うまく行かん
0351デフォルトの名無しさん
2011/04/13(水) 19:48:52.78file=sample_2011_04_01.txt
■b.bat
a.batに変数fileにファイル名を格納した場合
b.batでa.batの変数を利用するにはb.batでどのように書くのでしょうか?
0352デフォルトの名無しさん
2011/04/13(水) 21:22:06.66echo %file%
0353デフォルトの名無しさん
2011/04/16(土) 22:28:42.25ファイル名を指定して実行で
cmd /k test.exe
としたのですが、batファイルにpauseを書いたようにしてプログラムの出力が終わったらキーボードをワンプッシュでコマンドプロンプトを閉じたいのですが無理でしょうか?
batファイルでないとできませんでしょうか?
0354デフォルトの名無しさん
2011/04/16(土) 22:31:14.100355デフォルトの名無しさん
2011/04/16(土) 22:51:39.710356デフォルトの名無しさん
2011/04/16(土) 23:13:22.460357デフォルトの名無しさん
2011/04/16(土) 23:27:57.430358デフォルトの名無しさん
2011/04/16(土) 23:48:50.050359デフォルトの名無しさん
2011/04/17(日) 04:29:54.78以下のサイトのバッチを、サブフォルダ以下にも再帰的に実行させることはできますか?
http://bluemoonjp.blog96.fc2.com/blog-entry-22.html
出力先のフォルダに、ソースフォルダのディレクトリ構造を再現し、エンコードをおこないたいです。
(出力先の指定ディレクトリが存在しない場合は、HandBreak側で生成されます)
できれば、出力先フォルダでのファイル有無を見て、存在する場合はパスしたいです。
バッチファイルでそこまでって無理でしょうか。
0360デフォルトの名無しさん
2011/04/17(日) 08:52:44.95出来なくはないけどperlとかpython使った方が楽じゃね?
0361デフォルトの名無しさん
2011/04/17(日) 09:52:32.690362デフォルトの名無しさん
2011/04/17(日) 11:25:41.910363デフォルトの名無しさん
2011/04/17(日) 15:56:06.34for /dつかえば
0364デフォルトの名無しさん
2011/04/17(日) 16:14:58.67D:\2010\test\に移動したいのですが
cmd /k d: cd 2010\testとやってもD:\のままになってしまいます
無理でしょうか?
0365デフォルトの名無しさん
2011/04/17(日) 16:21:50.100366デフォルトの名無しさん
2011/04/17(日) 16:22:25.25出来なくはないけどperlとかpython使った方が楽じゃね
0367デフォルトの名無しさん
2011/04/17(日) 20:14:51.690368デフォルトの名無しさん
2011/04/17(日) 20:37:42.740369デフォルトの名無しさん
2011/04/17(日) 20:57:56.96ファイル名を指定して実行でcmd /k d: cd /d 2010\testとやってもD:\のままになります
使い方が間違ってるのでしょうか?
0370デフォルトの名無しさん
2011/04/17(日) 21:22:41.640371デフォルトの名無しさん
2011/04/17(日) 22:05:57.33d: cd /d …
これで一つのコマンドだろ。そんなコマンド無いから
本来エラーで何も起きなくてもおかしくないが
偶然、d: の後が無視される仕様だからだけ動いてただけ。
0372デフォルトの名無しさん
2011/04/18(月) 00:16:02.420373デフォルトの名無しさん
2011/04/20(水) 14:13:06.130374デフォルトの名無しさん
2011/04/21(木) 23:01:57.11helpコマンドを見てみましたが見つかりませんでした
%~0で引数の0番目(ここではバッチファイル名)、dはドライブ、pはディレクトリ、nはファイル名という部分的なパスを取得するというのは実行結果からわかるのですが、
こういったことが書いてあるヘルプはないものかと思いまして
0375デフォルトの名無しさん
2011/04/21(木) 23:48:03.200376デフォルトの名無しさん
2011/04/22(金) 00:32:07.890377デフォルトの名無しさん
2011/04/22(金) 01:16:31.090378デフォルトの名無しさん
2011/04/22(金) 15:10:34.670379デフォルトの名無しさん
2011/04/25(月) 09:14:59.50call foo.bat
より
start /wait cmd.exe /c foo.bat
の方が影響受けづらくていいな。exit で親まで巻き添えにされたりすることもないし。
0380デフォルトの名無しさん
2011/04/25(月) 11:38:51.26if "%a"=="a" (call :temp_a) else (call :temp_b)
goto eof
:temp_a
echo a
exit /b
:temp_b
echo_b
exit /b
:eof
endlocal
0381デフォルトの名無しさん
2011/04/25(月) 11:43:56.350382デフォルトの名無しさん
2011/04/25(月) 12:51:52.37start /wait cmd.exe /c foo.bat aa
echo %aa%
-foo.bat
echo %*
echo %aa%
set aa=bb
0383デフォルトの名無しさん
2011/04/25(月) 16:27:36.12惜しいな
cmd.exe /c foo.bat
でいいよ
0384デフォルトの名無しさん
2011/04/25(月) 19:03:33.39関係無いけど goto :eof と goto eof 使い分けるのは初心者イジメだなw
0385デフォルトの名無しさん
2011/04/26(火) 14:11:26.61関係あるよ
>>380は単なる初心者だろ
goto :eofを知らない だからexit/bを使う
endlocalは不要を知らない
0386デフォルトの名無しさん
2011/04/26(火) 14:32:45.570387デフォルトの名無しさん
2011/04/26(火) 16:21:43.93動かないバッチ前にして何をグダグダやってんだか。
0388デフォルトの名無しさん
2011/04/26(火) 16:26:42.93何をグダグダやってんだか。
0389デフォルトの名無しさん
2011/04/26(火) 16:37:19.77ほれ ぐだぐだ
0390デフォルトの名無しさん
2011/04/26(火) 17:06:34.80endlocalは不要を知らない
endlocalは不要を知らない
0391デフォルトの名無しさん
2011/04/26(火) 18:56:16.13何をグダグダやってんだか。
何をグダグダやってんだか。
0392デフォルトの名無しさん
2011/04/26(火) 19:33:02.70違う名前にリネームしていきたいのですが、
g001hoge → "g" "001" "hoge" に分離 → "ghoge001" を生成
g002hoge → "g" "002" "hoge" に分離 → "ghoge002" を生成
g003hoge → "g" "003" "hoge" に分離 → "ghoge003" を生成
どう書けばよいでしょうか?
0393デフォルトの名無しさん
2011/04/26(火) 19:42:23.830394デフォルトの名無しさん
2011/04/26(火) 21:30:48.22むしろ Flexible Renamer を勧めたい。
0395デフォルトの名無しさん
2011/04/27(水) 10:50:32.23<top>
<tax>1.05</tax>
<item name="たまご" price="250">
</top>
0396デフォルトの名無しさん
2011/04/27(水) 10:58:54.600397デフォルトの名無しさん
2011/04/30(土) 05:46:52.36不可能じゃないからやれば?
0398デフォルトの名無しさん
2011/04/30(土) 22:00:52.190399デフォルトの名無しさん
2011/05/01(日) 13:31:46.327Zipを使ってます
これをbatファイルに保存して実行するとtest.zipの拡張子txtのファイルを全て展開します
これを1回のコマンドでtxtだけでなくpdfもにも対応するにはどのように書いたらよいのでしょうか?
C:\7-Zip\7z.exe e test.zip -oC:\hozon .txt -r
.(txt|pdf)みたいに書ければよいのですが・・・
0400デフォルトの名無しさん
2011/05/01(日) 13:41:38.282回実行するか
マニュアルよくよんでみるか
どうしても1回って意味不明な縛りがよくわかんね
0401デフォルトの名無しさん
2011/05/01(日) 14:34:18.77マニュアルには複数拡張子は書いてないので出来ませんよね
0402デフォルトの名無しさん
2011/05/01(日) 14:58:49.64それっぽいのを拡張子だと判断するのは勝手だが。
拡張子という言葉を頭から削除してマニュアルもっと見ろ
0403デフォルトの名無しさん
2011/05/01(日) 15:03:20.73そこまで考えるほうが無駄だろ?下手の考え休むに似たりってなw
0404デフォルトの名無しさん
2011/05/01(日) 15:31:07.670405デフォルトの名無しさん
2011/05/01(日) 15:37:19.880406デフォルトの名無しさん
2011/05/01(日) 15:38:24.030407デフォルトの名無しさん
2011/05/01(日) 15:40:42.81*.(txt|pdf)
というのは正規表現じゃないと思うのだが…
0408デフォルトの名無しさん
2011/05/01(日) 15:59:25.680409デフォルトの名無しさん
2011/05/01(日) 17:24:50.560410デフォルトの名無しさん
2011/05/01(日) 19:31:59.450411デフォルトの名無しさん
2011/05/07(土) 17:58:41.82call "c:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\SetEnv.cmd" /Release /xp
と書いたらsetenv.cmdの中に
SET Path=%VCTools%;%VSTools%;%SdkTools%;%FxTools%;!Path!
などと書かれていて、最後の!Path!(オリジナルのPATHでなく)がそのまま残ってしまいます。
!が%と見なされるような呪文があるのでしょうか?
0412デフォルトの名無しさん
2011/05/07(土) 18:13:13.560413デフォルトの名無しさん
2011/05/08(日) 01:45:29.85そういう呪文、ありますなぁ…
0414デフォルトの名無しさん
2011/05/08(日) 02:43:47.530415デフォルトの名無しさん
2011/05/08(日) 08:36:32.44って書いて欲しいなあ、とよく思う…
大文字だけとか小文字だけだと読みにくいw
0416デフォルトの名無しさん
2011/05/08(日) 12:05:41.98ちゃんとスペース空けろ!
0417デフォルトの名無しさん
2011/05/08(日) 16:07:11.53このこのファイル名のxxxのx部分には数字と . 半角英字が入ります
この規則のファイルはフォルダの中に1つしか存在しません
このファイル名を取得して変数に入れる方法はございませんでしょうか?
想定するファイル名
sample_1.0.5.zip
sample_1.12.3.zip
sample_2.0.zip
sample_2.0b1.zip
0418デフォルトの名無しさん
2011/05/08(日) 16:14:43.80echo %dir%
で取れるのかなと思ったのですが無理でした
0419デフォルトの名無しさん
2011/05/08(日) 16:18:33.110420デフォルトの名無しさん
2011/05/08(日) 16:59:08.76ありがとうございます
0421デフォルトの名無しさん
2011/05/08(日) 18:47:26.85echo $dir
0422デフォルトの名無しさん
2011/05/08(日) 20:18:54.40誰もそんな事は聞いてないの。
0423デフォルトの名無しさん
2011/05/11(水) 12:11:48.860424デフォルトの名無しさん
2011/05/11(水) 13:25:22.39batにスクリプト言語埋め込んで、ならやったことあるが
バッチファイルの標準添付コマンドのみで
埋め込みJSとかも禁止、とかになると流石にやる気しないw
0425デフォルトの名無しさん
2011/05/11(水) 13:27:11.97これをゲームの内に入れても良いなら「ある」ことになるかなw
0426デフォルトの名無しさん
2011/05/11(水) 17:29:12.48if exist c:\tmp\nul ...
というテクニックがありますが、名前に空白を含むディレクトリの確認をしようと
ダブルクォートでくくったら正しく動きませんでした。
調べてみるとc:\tmpというディレクトリが存在するとき
1 if exist c:\tmp
2 if exist c:\tmp\nul
3 if exist "c:\tmp'
4 if exist "c:\tmp\nul"
で4だけifが成立しません。今回はcd出来ることで確認したけれど、後学の
ためにif existで正しくディレクトリの存在確認をする記法を教えてください。
OSはXpSP3です。
0427デフォルトの名無しさん
2011/05/11(水) 17:35:13.480428デフォルトの名無しさん
2011/05/11(水) 18:54:42.750429デフォルトの名無しさん
2011/05/11(水) 18:56:31.050430デフォルトの名無しさん
2011/05/11(水) 21:16:46.54でも、ファイルシステムの違いで出来ない場合もあるんですね。まんどうだなあ。
0431デフォルトの名無しさん
2011/05/12(木) 01:50:07.54http://d.hatena.ne.jp/otn/searchdiary?word=%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8%A5%EA%A4%AB%A4%C9%A4%A6%A4%AB%A4%CE%C8%BD%C3%C7&.submit=%B8%A1%BA%F7&type=detail
0432デフォルトの名無しさん
2011/05/12(木) 02:02:02.970433デフォルトの名無しさん
2011/05/13(金) 17:08:46.450434デフォルトの名無しさん
2011/05/13(金) 18:55:17.920435デフォルトの名無しさん
2011/05/13(金) 19:15:29.740436デフォルトの名無しさん
2011/05/13(金) 19:21:56.81GetFileAttributesとか寝言いうんじゃねーぞ。
0437デフォルトの名無しさん
2011/05/13(金) 19:47:50.840438デフォルトの名無しさん
2011/05/13(金) 19:53:50.80寝言言ってないでfor/?くらい読めよな
0439デフォルトの名無しさん
2011/05/13(金) 22:17:59.10for /d ("ディレクトリ") do found=%d
属性なんか取得する必要ない。取得しても属性文字列を姑息な方法で検査しなきゃならないし。w
0440デフォルトの名無しさん
2011/05/13(金) 22:25:28.84for /d %d in ("ディレクトリ") do found=%d
0441デフォルトの名無しさん
2011/05/13(金) 22:27:36.70寝言言ってないで確認してから言えよな
0442デフォルトの名無しさん
2011/05/13(金) 22:28:38.02寝言言ってないで確認してから言えよな
0443デフォルトの名無しさん
2011/05/13(金) 22:35:57.18ところで、属性文字列の姑息じゃない確認方法ってあるのか? w
0444デフォルトの名無しさん
2011/05/13(金) 22:39:41.78寝言言ってないで確認してから言えよな
0445デフォルトの名無しさん
2011/05/13(金) 22:54:40.10コピペしなかったが、動作確認はしてるぞ。
寝言言ってないで、属性文字列の姑息じゃない検査法答えろよ。
0446デフォルトの名無しさん
2011/05/13(金) 23:02:53.86for /d %d in ("ファイル") do echo ファイルがディレクトリだってー?
0447デフォルトの名無しさん
2011/05/13(金) 23:13:37.95set dir=%~1
for /d %%d in ("%dir%*") do if "%dir%" == "%%~d" set found="%%~d"
姑息じゃない、属性文字列の確認方法はどうしたんだよ。
0448デフォルトの名無しさん
2011/05/13(金) 23:17:00.69for/?読んでfor/f使えよ
0449デフォルトの名無しさん
2011/05/13(金) 23:38:11.72こうか? 十分に姑息だろう。w
0450デフォルトの名無しさん
2011/05/13(金) 23:43:54.07普通の頭持ってりゃもっとスマートに書けるわ
もっとfor/?読み込めよ
0451デフォルトの名無しさん
2011/05/13(金) 23:46:16.23ifいらない
delimsいらない
0452デフォルトの名無しさん
2011/05/13(金) 23:52:06.390453デフォルトの名無しさん
2011/05/14(土) 00:00:17.23そんなやつには教えてやらんよp
0454デフォルトの名無しさん
2011/05/14(土) 00:03:04.000455デフォルトの名無しさん
2011/05/14(土) 00:09:37.01おまえの頭の筋悪すぎだからなw
0456デフォルトの名無しさん
2011/05/14(土) 00:14:32.460457デフォルトの名無しさん
2011/05/14(土) 00:28:10.52それを解析するから、筋が悪いのである。
0458デフォルトの名無しさん
2011/05/14(土) 00:34:45.99UNIXでは"ls -ld ディレクトリ"の出力を解析するバカは居ない。test -dで真偽が判定出来るからだ。
ディレクトリ以外の属性情報を含む文字列を取得し、解析する方法は筋が悪いのである。
0459デフォルトの名無しさん
2011/05/14(土) 00:36:17.040460デフォルトの名無しさん
2011/05/14(土) 00:47:33.89真偽で返してくれる手段が存在するのに、多値の方を選ぶのは筋が悪い。
0461デフォルトの名無しさん
2011/05/14(土) 01:40:34.43if exist folder\か?
if exist folder\*か?
0462デフォルトの名無しさん
2011/05/14(土) 04:43:10.310463デフォルトの名無しさん
2011/05/14(土) 06:32:21.420464デフォルトの名無しさん
2011/05/14(土) 07:14:27.860465デフォルトの名無しさん
2011/05/14(土) 08:03:37.060466デフォルトの名無しさん
2011/05/14(土) 08:23:37.032値の結果を得る方法は既に出した。多値の属性を文字列で取り出して判定するような
筋の悪い方法にしがみつくバカには見えないらしい。w
>>462
「一部の条件でたまたま動く」ではなく、「仕様(ヘルプ)に書かれている通りに動く」
なので全然問題ない。
0467デフォルトの名無しさん
2011/05/14(土) 08:36:22.620468デフォルトの名無しさん
2011/05/14(土) 09:03:58.990469デフォルトの名無しさん
2011/05/14(土) 09:20:28.33プログラム作るまでの間に合わせぐらいの用途だろ
0470デフォルトの名無しさん
2011/05/14(土) 09:45:21.25複雑にグチャグチャなスクリプトはWSHでいい
0471デフォルトの名無しさん
2011/05/14(土) 10:13:08.680472デフォルトの名無しさん
2011/05/14(土) 10:45:48.67バッチじゃないとダメだなんて特殊状況はそうそう無いし。
まぁ、バッチに縛られたい趣味でもあるなら、仕事に持ち込まれない限りは止めないけど……
0473デフォルトの名無しさん
2011/05/14(土) 10:57:01.700474デフォルトの名無しさん
2011/05/14(土) 12:46:47.88> 2値の結果を得る方法は既に出した。
それってひょっとして >>447 のこと?
0475デフォルトの名無しさん
2011/05/14(土) 17:56:52.15if exist "c:\System Volume Information\*" echo これか?
0476デフォルトの名無しさん
2011/05/14(土) 18:01:28.91おまえスクリプトのド素人か?
0477デフォルトの名無しさん
2011/05/14(土) 18:27:50.630478デフォルトの名無しさん
2011/05/14(土) 18:34:10.050479デフォルトの名無しさん
2011/05/14(土) 18:40:41.440480デフォルトの名無しさん
2011/05/14(土) 20:05:59.92>「仕様(ヘルプ)に書かれている通りに動く」
読解能力も欠如してんのか?
0481デフォルトの名無しさん
2011/05/14(土) 22:20:25.07例えば基本中の基本、echo aa > a.txtみたいなのでいいのでsjisでなくutf8で書き出したいのですが…
調べてchcp 65001とかやっても、あくまで切り替わるのは表示で、
リダイレクトには効果無いみたいなんですが、皆さんの環境だとどうなってます?
0482デフォルトの名無しさん
2011/05/14(土) 22:29:39.180483デフォルトの名無しさん
2011/05/14(土) 22:31:27.72最小コードを提示してみそ
0484デフォルトの名無しさん
2011/05/14(土) 22:57:51.11すいません、やりたい最終形はActivePerlを入力としてのファイルへのリダイレクトなんです。
chcp 65001
perl test.pl > output.txt
ってだけの。
ってあれ、バッチで実行したら最後に追記したpauseが効かない…
ひょっとしてperl読み込んだ時点で何か乗っ取られる的な事になってる?
そういうことってあるんでしょうか?
0485デフォルトの名無しさん
2011/05/14(土) 23:12:57.09そりゃ test.pl が utf8 吐かないとだめだろ。
0486デフォルトの名無しさん
2011/05/14(土) 23:16:40.94chcp 65001 & perl test.pl > output.txt & pause
ってやってみそ
0487デフォルトの名無しさん
2011/05/14(土) 23:50:46.34やってみたのですが答えじゃなくて式がそのまま出力されました
0488デフォルトの名無しさん
2011/05/15(日) 00:13:53.200489デフォルトの名無しさん
2011/05/15(日) 10:23:44.140491デフォルトの名無しさん
2011/05/15(日) 12:23:37.40アドバイスありがとうございます、どうも一朝一夕には無理っぽいので諦めて逐一コード変換通すことにします。
というか何かマイマシンの仕様やら何やらが複雑に絡み合ってて原因究明に時間掛かるっぽいので…
0492デフォルトの名無しさん
2011/05/15(日) 14:25:23.97やっつけでいいなら
perl test.pl | nkf -w8 > output.txt
とかでいいと思う。
もちろん nkf のインストールが必要だが。
あと、この手の話に「マシンの仕様」が絡むことはほとんどないし、
原因ははっきりしてるように思うけど...。
0493デフォルトの名無しさん
2011/05/15(日) 14:53:54.420494デフォルトの名無しさん
2011/05/15(日) 14:55:56.54自身のこと言ってんの?
0495デフォルトの名無しさん
2011/05/15(日) 16:21:49.30set/?
%RANDOM% - 0 から 32767 の間の任意の 10 進数に展開します
0496デフォルトの名無しさん
2011/05/15(日) 16:30:54.860497デフォルトの名無しさん
2011/05/15(日) 16:35:17.120498デフォルトの名無しさん
2011/05/15(日) 16:46:49.64> 0:00〜23:59までの時間をランダムに表示したいのですが方法ないですか?
setlocal enabledelayedexpansion
:loop
set /a M = %RANDOM% / 22
if 1440 leq %M% goto loop
set /a HH = %M% / 60
set /a MM = %M% %% 60
echo %HH%:%MM%
endlocal
1:2 を 01:02 みたく出す方法は思いつかなかった。
0499デフォルトの名無しさん
2011/05/15(日) 17:26:42.64set /a n=1000+n
echo %n:~-2%
0500デフォルトの名無しさん
2011/05/15(日) 17:36:42.93ある数値mからn以下の数値を求めるには剰余を使うのが一般的
set /a h=100 + %random% % 24
set /a m=100 + %random% % 60
echo %h:~-2%:%m:~-2%
0501デフォルトの名無しさん
2011/05/15(日) 18:22:01.17set /a h=100 + random * 24 / 32768
set /a m=100 + random * 60 / 32768
echo %h:~-2%:%m:~-2%
/aでは%はいらない
0502デフォルトの名無しさん
2011/05/15(日) 18:24:39.470503デフォルトの名無しさん
2011/05/15(日) 19:01:29.25> /aでは%はいらない
一度位試してから書け
0504デフォルトの名無しさん
2011/05/15(日) 19:13:15.180505デフォルトの名無しさん
2011/05/15(日) 19:54:00.670506デフォルトの名無しさん
2011/05/15(日) 20:43:12.31自信満々で「属性嫁」とかいう筋の悪い回答出した、てめーの事だよ。
0507デフォルトの名無しさん
2011/05/15(日) 20:56:20.410508デフォルトの名無しさん
2011/05/15(日) 21:09:45.07おまえ人としての筋が悪いんじゃね?
0509デフォルトの名無しさん
2011/05/15(日) 22:49:26.87仕様上の保証が全くない、たまたま動作に依存することのどこがよい筋なんだ?
0510デフォルトの名無しさん
2011/05/15(日) 22:53:28.74仕様(ヘルプ)すら読めない池沼は引っ込んでろ。
0511デフォルトの名無しさん
2011/05/15(日) 22:55:39.540512デフォルトの名無しさん
2011/05/15(日) 22:57:58.58指定します。
0513デフォルトの名無しさん
2011/05/15(日) 23:05:48.28ところで、自信満々の属性文字列なんだが、「ディレクトリの場合はdが先頭になる」
というのはどこかに書いてあるのか? for /?には書いてないぞ。まさか、
> 仕様上の保証が全くない、たまたま動作に依存することのどこがよい筋なんだ?
じゃないよなあ。 www
0514デフォルトの名無しさん
2011/05/15(日) 23:45:00.360515デフォルトの名無しさん
2011/05/15(日) 23:56:10.47>>451 がそれほど悔しかったのか?だったらそれをばねにして勉強しろよ
0516デフォルトの名無しさん
2011/05/16(月) 00:17:51.73あれ、聞いてはいけない事聞いちゃった? 検証方法も秘密。ドキュメントも秘密。
やっぱ、属性文字列取り出すのは↓なんだね。www
> 仕様上の保証が全くない、たまたま動作に依存することのどこがよい筋なんだ?
0517デフォルトの名無しさん
2011/05/16(月) 00:19:58.98はいはい
「コマンドの出力をスクリプトに取り込んで処理するなんてスクリプトとして筋悪です」
これでいい?
0518デフォルトの名無しさん
2011/05/16(月) 00:27:12.980519デフォルトの名無しさん
2011/05/16(月) 00:32:57.49You cannot use the if command to test directly for a directory
0520デフォルトの名無しさん
2011/05/16(月) 00:47:29.470521デフォルトの名無しさん
2011/05/16(月) 01:48:04.920522デフォルトの名無しさん
2011/05/16(月) 02:09:33.57おまえさんがあほってことじゃないの?
0523デフォルトの名無しさん
2011/05/16(月) 02:27:01.48周回遅れのあほってことじゃないの?
0524デフォルトの名無しさん
2011/05/16(月) 11:28:31.99exit
これでサービスが立ち上がったときに自動的にコマンドプロンプトを閉じてるのですが
もしサービス開始するときにエラーがあったらコマンドプロンプトを閉じたくないのですが
エラーがないときはexitでそのまま終了させて、エラーがあればそのまま表示しておく方法ってございませんか?
0525デフォルトの名無しさん
2011/05/16(月) 11:34:29.06net start サービス名 && exit /b || echo error&pause
でいけるかもしれない
0526デフォルトの名無しさん
2011/05/16(月) 11:43:51.69エラーメッセージで判定するとなると筋悪とか言うあほがいるから気をつけたほうがいいよ
0527デフォルトの名無しさん
2011/05/16(月) 13:06:40.05「属性嫁」って颯爽と登場したところまでは良かったけど、具体的な方法も示せずに、
ヒントとかいって苦し紛れにだしたfor /?で、属性読まずに済む完全な方法を発見さ
れた上に、始めに言い出した属性文字列の仕様がどこにもなくて動いたとしてもまぐ
れで動いているに過ぎない事を指摘されちゃ、立ち直れないだろうな。
その上、ブーメランもくらっているし、仕様も読めないし、たった2行のバッチスクリ
プトの意味も理解できてないし。
でも、己の未熟さが招いた結果だから、諦めて受け入れろ。
0528デフォルトの名無しさん
2011/05/16(月) 13:14:44.130529デフォルトの名無しさん
2011/05/16(月) 15:04:40.890530デフォルトの名無しさん
2011/05/16(月) 21:31:33.63周回遅れの阿呆にスクリプトの常道を筋悪なんてけなされてくやち〜よぉ〜
これでいい?
0531デフォルトの名無しさん
2011/05/16(月) 22:06:38.96周回遅れのドキュメントで申し訳ないが、
ttp://support.microsoft.com/kb/194916/ja
にnet startのerrorlevel判定とメッセージ出力判定のサンプルがあるよ
0532デフォルトの名無しさん
2011/05/16(月) 23:02:22.07>if errorlevel==1 goto SMTPSVC
ってなんだよ ひでーな 動くけど
0533デフォルトの名無しさん
2011/05/17(火) 13:23:07.55この p という変数からフォルダパス (C:\Tools\Firefox) を抜きとるのに、
call でサブルーチンの引数にして %~dp1 とする以外に方法はありますか?
0534デフォルトの名無しさん
2011/05/17(火) 13:28:15.01for %%i in (C:\Tools\Firefox\firefox.exe) do set parent=%%~dpi
echo %parent%
0535デフォルトの名無しさん
2011/05/17(火) 15:08:31.36こちらの方が随分良いので、そのまま使用させていただきます。
0536デフォルトの名無しさん
2011/05/17(火) 16:42:59.25>その上、ブーメランもくらっているし、仕様も読めないし、たった2行のバッチスクリ
>プトの意味も理解できてないし。
それって>>447のことみたいだが、たった2行のバッチスクリプトもまともに書けんのか?情けない。
まともに動くものを書いてから大口たたけよな。
call xxx c:\users
0537デフォルトの名無しさん
2011/05/17(火) 17:06:54.420538デフォルトの名無しさん
2011/05/17(火) 17:20:55.57You cannot use the for command to test directly for a directory
0539デフォルトの名無しさん
2011/05/17(火) 17:39:34.020540デフォルトの名無しさん
2011/05/17(火) 18:05:28.660541デフォルトの名無しさん
2011/05/17(火) 18:44:26.59よっぽど悔しかったんだな。
5日間必死で考えてようやくバグ見つけたか。 実はそれも考えてあるんだ。w
set dir=%~1
for /d %%d in ("%dir%*") do if /i "%dir%" == "%%~d" set found="%%~d"
0542デフォルトの名無しさん
2011/05/17(火) 18:50:10.89すごーい! あんた天才やね!
0543デフォルトの名無しさん
2011/05/17(火) 19:12:44.43call xxx c:\boot
の対策も当然考えてるんだろうな?
0544デフォルトの名無しさん
2011/05/17(火) 19:31:22.670545デフォルトの名無しさん
2011/05/17(火) 19:54:43.71dir/b /adh c:\boot*
の多値出力を処理するのかなぁ?
0546デフォルトの名無しさん
2011/05/17(火) 20:32:33.49これが使えないっていう話は聞いたことがないもんな
0547デフォルトの名無しさん
2011/05/17(火) 22:01:41.64ディレクトリかどうかの判定に属性見ることのどこが筋悪なんだ?
属性見ないでやろうってーのが姑息だろが?
0548デフォルトの名無しさん
2011/05/18(水) 22:56:40.93実はそれも考えてあるんだ。w
0549デフォルトの名無しさん
2011/05/19(木) 04:46:23.83for /f "delims=" %%d in ('dir/b /ad "%dir%*") do if /i "%dir%" == "%%~d" set found="%%~d"
0550デフォルトの名無しさん
2011/05/19(木) 13:19:45.24aaaa
bbaa
ccaa
ddaa
eeaa
先頭がcから始まる(ここでは3行目)文字列に、頭に#をつけて以下のようにこのようにしたいのですが
どのようにできますか?
aaaa
bbaa
#ccaa
ddaa
eeaa
0551デフォルトの名無しさん
2011/05/19(木) 20:52:19.290552デフォルトの名無しさん
2011/05/19(木) 21:15:11.650553デフォルトの名無しさん
2011/05/20(金) 00:28:06.490554デフォルトの名無しさん
2011/05/20(金) 05:07:19.81ifで引用符を付けたのにsetで付けないのはナゼ?
0555デフォルトの名無しさん
2011/05/20(金) 10:52:48.100556デフォルトの名無しさん
2011/05/20(金) 12:00:02.80でも、どっちにしろnullの部分展開だとエラーが出るね。
The syntax of the command is incorrect.
>if "~0,1string
0557デフォルトの名無しさん
2011/05/20(金) 13:31:41.03set string=#%string%
)
if と同じ行にset置いたら動かん…set以外だったら行くみたいだが。
ようわからんわw
0558デフォルトの名無しさん
2011/05/20(金) 17:04:08.350559デフォルトの名無しさん
2011/05/20(金) 17:55:28.83if "%string:~0,1%"=="c" set string=#%string%
:x
0560デフォルトの名無しさん
2011/05/20(金) 17:56:52.90ifとか()とかは解釈の過程でなんか空白入れられたりとか色々やるんよね
非常に相性が悪い
0561デフォルトの名無しさん
2011/05/21(土) 23:10:27.60batファイルに
"C:\Program Files\zeroremote\zeroremote.exe" /c:192.168.0.201
"C:\Program Files\zeroremote\zeroremote.exe" /c:192.168.0.202
と記載してバッチを起動してみると
1行目のプログラムは起動するのですが
2行目の方のは1行目で開かれたウィンドウを閉じないと実行されず処理が停止状態になってしまいます
どんどん処理を実行して行く方法があったら教えていただけないでしょうか
よろしくお願い致します
0562デフォルトの名無しさん
2011/05/21(土) 23:44:07.23>>354-356
0563デフォルトの名無しさん
2011/05/22(日) 00:32:46.26>>136
0564デフォルトの名無しさん
2011/05/22(日) 18:57:34.05set /p x=<%a%
echo %x%
こんなんで test.txt の一行目が取得できますが、2 行目だけを取得する
最も簡単な方法を教えて下さい。set /p を使ってできたような気がする
んですけど…。
0565デフォルトの名無しさん
2011/05/22(日) 19:55:32.37(set /p x=
set /p x=)<%a%
echo %x%
0566デフォルトの名無しさん
2011/05/22(日) 20:44:54.62指定した行を取得したいばあいはどうやるのですか?
0567デフォルトの名無しさん
2011/05/22(日) 20:51:43.910568564
2011/05/22(日) 20:57:34.38set /p についてる括弧はどういう機能でしょうか?
0569デフォルトの名無しさん
2011/05/22(日) 21:00:46.57echo b>c
(echo a
echo b)>c
0570デフォルトの名無しさん
2011/05/22(日) 21:57:29.03set に括弧が付いてるんではなく
(
set /p x=
set /p x=
)<%a%
0571564
2011/05/23(月) 05:59:49.29>>570 を >>569 のように括弧なしにすることは出来るんでしょうか?
朝のうちにもう一回ググってきます。
0572デフォルトの名無しさん
2011/05/23(月) 08:34:42.79意味もなく dir すればできるっぽいけどもうちょっとスマートな方法あれば
0573デフォルトの名無しさん
2011/05/23(月) 08:50:26.750574デフォルトの名無しさん
2011/05/23(月) 12:18:38.75これでサービスが正常に起動できた場合に特定の処理をする方法ってありますか
if (サービスが正常に起動できたか){
0575デフォルトの名無しさん
2011/05/23(月) 13:42:39.04あっちの落とし前が先
0576デフォルトの名無しさん
2011/05/23(月) 14:19:22.390577デフォルトの名無しさん
2011/05/23(月) 14:37:08.32でerrorlevel見ればいいんじゃね
0578デフォルトの名無しさん
2011/05/23(月) 14:41:26.88とかじゃダメなん
0579デフォルトの名無しさん
2011/05/23(月) 14:46:47.74}
function b(){
}
みたいに1ファイルにまとめておきたいのでこういうふうに関数って作れませんか?
0580デフォルトの名無しさん
2011/05/23(月) 14:50:18.560581デフォルトの名無しさん
2011/05/23(月) 15:19:00.28>>531
0582デフォルトの名無しさん
2011/05/23(月) 15:20:58.79call;
0583デフォルトの名無しさん
2011/05/23(月) 15:25:43.520584デフォルトの名無しさん
2011/05/23(月) 16:52:15.83echo b>>c
と勘違い?
0585デフォルトの名無しさん
2011/05/23(月) 22:50:48.15俺は sc コマンドで適当にループさせてやってる。
sc PC名 query サービス名 | findstr "RUNNING" 1>nul 2>&1
if errorlevel 1 (
適当に待ちとループ
)
あとは10回ループして動いてなかったら失敗扱いにしてメッセージを出して、みたいな。
0586デフォルトの名無しさん
2011/05/24(火) 14:47:40.72バッチで コマンドを入れる事は可能でしょうか?
というのもCSV保存、読み込み用のバッチを作ろうと思っています
その際に保存用(save.bat)にオプション等で保存先を指定したいのです。
考えている呼び出しの形こんな感じ→ call save.bat -str=%a -savelocation="c:\\test" -fileName="test.csv" -init=1
求めてる動作→initが1なのでTEXTを初期化する(デフォ:上書き) savelocation,fileNameがあったらそこを保存場所に使う(なければデフォ:./savelogYYMMDD_MM.dat(YYMMDDMMは書き込みの最初に取得する)
strに保存する1行分の文字を入れる(必須) )
call save.bat -savelocation="c:\\test"のようにしてcall時に変数に入れて渡さず コマンドでセーブ場所を指定する事は可能ですか?
0587デフォルトの名無しさん
2011/05/24(火) 15:22:46.260588デフォルトの名無しさん
2011/05/24(火) 15:48:57.64現在save.batを呼ぶ際に下の方法で保存場所を指定しています
rem main.bat
set Location="c:\test"
call save.bat
goto :EOF
ところが、save.batをバッチ以外から読み込もうとしてもできなかったので
rem main.bat
call save.bat -Location="c:\test"
goto :EOF
このような形に変更したいと思っています
可能でしょうか
0589デフォルトの名無しさん
2011/05/24(火) 16:04:34.53できないというのも不思議な話だが、それがだめならmain.batでも呼べば?
0590デフォルトの名無しさん
2011/05/24(火) 16:10:40.25call main.bat 111 222 333
%1=111
%2=222
%3=333
0591デフォルトの名無しさん
2011/05/24(火) 16:13:20.88sub.batを変更しないで可能でしょうか?っていう質問だろ
だから答えは不可能
0592デフォルトの名無しさん
2011/05/24(火) 16:17:25.68可能
0593デフォルトの名無しさん
2011/05/24(火) 16:26:24.22自動車のようにガソリンを使わず移動できる。かそれとも
自動車のように長い主翼を持たない飛行装置。の文か迷った。
0594デフォルトの名無しさん
2011/05/24(火) 16:30:22.41呼び出し:main.bat "c:\Program Files\aaco\v1\save\save.dat"
main.bat中身
rem ダブルクオーテーションを抜く処理(違うかも)
set DATA = %1~1,-1%
if NOT EXIST %DATA% goto ERROR
call save.bat %DATA%
pause
exit
:ERROR
goto :EOF
こんな感じですか?
0595デフォルトの名無しさん
2011/05/24(火) 16:34:15.220596デフォルトの名無しさん
2011/05/24(火) 16:42:19.640597デフォルトの名無しさん
2011/05/24(火) 16:54:44.400598デフォルトの名無しさん
2011/05/24(火) 16:57:35.360599デフォルトの名無しさん
2011/05/24(火) 17:04:02.200600デフォルトの名無しさん
2011/05/24(火) 17:08:01.01一層、意味不明な文を…
お前の住んでる環境では、この意味をみんな理解できるのか?
0601デフォルトの名無しさん
2011/05/24(火) 17:13:05.50ではバッチファイルは読み込めない。
という文章なら正しいよ
0602デフォルトの名無しさん
2011/05/24(火) 17:15:18.74バッチファイルの中身はコマンドだけど?
0603デフォルトの名無しさん
2011/05/24(火) 17:19:12.20自己解決しました
0604デフォルトの名無しさん
2011/05/24(火) 17:20:39.36使用方法1
$save.bat エンター
結果 → 通常処理(上書き)。保存する場所もデフォルト
使用方法2
$save.bat -Location="c:\test"
結果 → 通常処理(上書き)。保存する場所をc:\testに変える
使用方法3
$save.bat -init=1
結果 → 通常処理(新規)
使用方法4
$save.bat -init=1 -Location="c:\test"
結果 → 通常処理(新規) 保存する場所をc:\testに変える
0605デフォルトの名無しさん
2011/05/24(火) 17:27:13.200606デフォルトの名無しさん
2011/05/24(火) 17:32:35.92おう・・・
意味不明な事を書きまくってすみませんでした・・・
ちょっと頭冷やしてきます
0607デフォルトの名無しさん
2011/05/24(火) 17:42:10.41もっとシンプルに -location c:\
って形式にして
if "%~1"=="-location" (
set location=%~2
shift
shift
)
とかやればいいんじゃねーの
0608デフォルトの名無しさん
2011/05/24(火) 17:54:37.57(環境変数の渡し方を知らないから)バッチファイル以外からは読み込めない(実行できない)
だから、コマンドラインオプションで渡したい。
という事か。どういう訓練を積むとあんなに難解な質問文を書けるようになるのだろう。
ネイティブ日本語スピーカーじゃないのかな?
0609デフォルトの名無しさん
2011/05/24(火) 18:08:56.400610デフォルトの名無しさん
2011/05/24(火) 18:13:04.590611デフォルトの名無しさん
2011/05/24(火) 19:14:46.18こんな感じなら出来るんじゃない。>>607 見て思った。
0612デフォルトの名無しさん
2011/05/24(火) 19:21:36.12batファイルで調節することは不可能ですか?手動がめんどうなのです
0613デフォルトの名無しさん
2011/05/24(火) 19:25:44.35変数をパラメータに入れて渡したいなら
save.bat str=%a,savelocation="c:\\test",filename="test.csv",init=1
みたいにやって、
set args=%*
set %args:,=&set %
これじゃいかんの?
区切りはカンマじゃ問題あるかもしれんから使いそうに無い別文字でも
0614デフォルトの名無しさん
2011/05/24(火) 19:28:56.50mode /?
0615デフォルトの名無しさん
2011/05/24(火) 19:31:03.23=使うのと同じ
>>612
可能
>>613
だめだろ
0616デフォルトの名無しさん
2011/05/24(火) 19:34:55.73set args=%*
%args:~1,1%
こんなのとかw
0617デフォルトの名無しさん
2011/05/24(火) 19:36:41.89だった
0618デフォルトの名無しさん
2011/05/24(火) 19:50:19.07おおおおおおおおおおおおおおおおおおおおおおおおおおおできました!
0619デフォルトの名無しさん
2011/05/24(火) 22:19:25.00可能。save.bat で引数をパースする処理を書かなければならない。
それが面倒なら
%1 "保存場所"
%2 "ファイル名"
%3 "新規"
とか決め打ちして
使用方法1
$save.bat "" "" ""エンター
結果 → 通常処理(上書き)。保存する場所もデフォルト
使用方法2
$save.bat "c:\test" "" ""
結果 → 通常処理(上書き)。保存する場所をc:\testに変える
使用方法3
$save.bat "" "" "new"
結果 → 通常処理(新規)
使用方法4
$save.bat "c:\test" "" "new"
結果 → 通常処理(新規) 保存する場所をc:\testに変える
で%1が "" ならデフォルトの保存場所に保存
set location="c:\保存場所"
if not %1 == "" (
set location=%1
)
%2 %3についても指定されているかをそれぞれ判定
0620デフォルトの名無しさん
2011/05/24(火) 22:29:10.80これを何とかする方法はありませんか?
0621デフォルトの名無しさん
2011/05/24(火) 22:34:03.140622デフォルトの名無しさん
2011/05/25(水) 09:55:27.360623デフォルトの名無しさん
2011/05/27(金) 17:53:25.860624デフォルトの名無しさん
2011/05/27(金) 19:54:32.160625デフォルトの名無しさん
2011/05/27(金) 19:58:39.040626デフォルトの名無しさん
2011/05/27(金) 20:02:50.54windowstyleを指定すればええやん
0627デフォルトの名無しさん
2011/05/27(金) 20:43:21.100628デフォルトの名無しさん
2011/06/01(水) 10:37:17.450629デフォルトの名無しさん
2011/06/01(水) 11:51:08.310630デフォルトの名無しさん
2011/06/01(水) 12:07:32.44http://www.nirsoft.net/utils/nircmd.html
でもダウンロードリンクがどこにあるのか分かりませんorz
0631デフォルトの名無しさん
2011/06/01(水) 12:11:06.97nircmd.exeとnircmdc.exeが両方入っているのですがどっちもbeep 500 2000を実行したら動いたので違いがわかりませぬ
0632デフォルトの名無しさん
2011/06/01(水) 14:13:41.260633デフォルトの名無しさん
2011/06/01(水) 19:05:41.17nircmd
0634デフォルトの名無しさん
2011/06/03(金) 02:01:25.68これ実行したら、ファイルが全部消えてしもた…
"" は *.* と同じなの?
0635デフォルトの名無しさん
2011/06/03(金) 02:06:15.320636デフォルトの名無しさん
2011/06/03(金) 02:20:35.950637デフォルトの名無しさん
2011/06/03(金) 04:34:08.50dir * >b
fc a b
0638デフォルトの名無しさん
2011/06/03(金) 08:30:39.16if not exist b copy nul b
if not exist c copy nul c
dir /b "" > a
dir /b * > b
dir /b > c
fc a b
fc a c
pause
0639デフォルトの名無しさん
2011/06/03(金) 22:20:15.76別のバッチちゃんから止めることってできるかな?
0640デフォルトの名無しさん
2011/06/03(金) 22:23:49.620641デフォルトの名無しさん
2011/06/03(金) 22:25:26.270642デフォルトの名無しさん
2011/06/03(金) 22:26:48.06ウィンドウ表示の場合はどうやるの?
0643デフォルトの名無しさん
2011/06/03(金) 22:27:23.530644デフォルトの名無しさん
2011/06/03(金) 22:34:22.000645デフォルトの名無しさん
2011/06/03(金) 22:46:25.090646デフォルトの名無しさん
2011/06/03(金) 23:15:50.61チェック用のファイルやレジストリで自爆させるようなフラグを立てるしか
0647デフォルトの名無しさん
2011/06/04(土) 00:10:46.450648デフォルトの名無しさん
2011/06/04(土) 00:14:22.20はやめて〜せめて環境変数でやれよ
0649デフォルトの名無しさん
2011/06/04(土) 01:06:15.910650デフォルトの名無しさん
2011/06/04(土) 03:44:16.110651デフォルトの名無しさん
2011/06/04(土) 08:34:37.05copy ""."" a
0652デフォルトの名無しさん
2011/06/04(土) 17:17:31.480653デフォルトの名無しさん
2011/06/04(土) 20:20:58.910654デフォルトの名無しさん
2011/06/04(土) 20:26:43.040655デフォルトの名無しさん
2011/06/05(日) 02:40:17.94テキストファイル内が下記の感じで、
それぞれスペースで区切られているんだけど・・・
行の末尾の数字のみの合計を求める場合どう書けばよいのでしょう。
aaa bbb ccc 123
ddd eee ddd 456
ggg hhh aaa 789
(この場合123+456+789としたい)
0656デフォルトの名無しさん
2011/06/05(日) 06:20:58.67set/?
0657デフォルトの名無しさん
2011/06/05(日) 06:23:06.040658デフォルトの名無しさん
2011/06/05(日) 06:26:36.710659デフォルトの名無しさん
2011/06/05(日) 14:13:33.30>>655です、レスありがとうございます。
検索で調べているのですが、どうも「SET x=」で固定数を計算する例や、
時間・日時の差分などを求めるものが多く、希望通りのサンプルが見つからないもので・・・
具体的にはどんな感じで書けばよいでしょうか?
0660デフォルトの名無しさん
2011/06/05(日) 14:24:27.51任意の位置にあるbatにC:\a\b\c.txtを引数として渡した場合に(D&Dで突っ込んだ場合に)
C:\a\y\z.txtを追加してbatのあるフォルダに出力する、みたいな感じに使うのですが
絶対パスではなく%~dp1に対する..\y\z.txtの指定方法をお願いします。
0661デフォルトの名無しさん
2011/06/05(日) 15:11:30.04set aaa=%~dp1
set aaa=%aaa:b=y%
copy "%aaa%z.txt" "%~dp0z.txt"
こんな感じになったのですがどうでしょうか
あちらこちらで使うのですがb、y、zの名前はどこでも変わらないです
0662デフォルトの名無しさん
2011/06/05(日) 15:34:11.950663デフォルトの名無しさん
2011/06/05(日) 15:54:55.84展開とか何とかで
C:\a\b\..\y\z.txtに・・・
ってこれ普通に読めるorz
どうもありがとうございました
0664デフォルトの名無しさん
2011/06/05(日) 18:08:24.49\a.xls
\b
があってa.batを実行したらフォルダbにa.xlsをコピーして\b\a.xlsを実行
終了後b\a.xlsを削除したいのですがどうすればいいでしょうか
0665デフォルトの名無しさん
2011/06/05(日) 19:07:42.07終了後b\a.xlsを削除すればいいよ
0666デフォルトの名無しさん
2011/06/05(日) 19:41:55.67すみません、まだ勉強し始めなので正確性に欠けるかもですが、
うちではこれで希望に添う結果になりましたがどうでしょうか?
copy /b a.xls b\
del a.xls
引き続き>>655の方法をおわかりの方、申し訳ありませんが、
具体的にはどう書けば良いのかお知恵をお貸し下さい><
0667デフォルトの名無しさん
2011/06/05(日) 20:10:05.780668デフォルトの名無しさん
2011/06/05(日) 20:33:21.44ヒント:
FOR /F ["オプション"] %変数 IN (ファイル セット) DO コマンド [コマンド パラメーター]
ファイル セットは、1 つ以上のファイル名です。各ファイルが開かれ、
読み取られ、処理されてから、ファイル セットの次のファイルに進みます。
処理では、ファイルの読み取り、個々のテキスト行への分割と、0 個以上の
トークンへの解析が行われます。その後、見つかったトークン文字列を変数値に
設定して for ループの本体が呼び出されます。既定では、/F は、各ファイルの
各行から、空白で区切られた最初のトークンを取得して渡します。空白行は
スキップされます。既定の解析動作を変更するには、省略可能な "オプション"
パラメーターを指定します。これは、異なる解析オプションを指定する 1 つ以上の
キーワードを含む、引用符で囲まれた文字列です。キーワードは、次のとおりです:
eol=c - 行末のコメント文字を指定します (1 文字)。
skip=n - ファイルの先頭でスキップする行数を指定します。
delims=xxx - 区切り文字のセットを指定します。
これは、既定の区切り文字であるスペースとタブを
置き換えます。
tokens=x,y,m-n - 各繰り返しに対して、各行から for 本体に渡す
トークンを指定します。これにより、追加の変数名が
割り当てられます。
m-n の形式は範囲で、m 番目から n 番目の
トークンを指定します。
tokens= 文字列の最後の文字がアスタリスクである場合は、
追加の変数が割り当てられ、最後のトークンが解析された
後、行に含まれている残りのテキストを受け取ります。
0669デフォルトの名無しさん
2011/06/05(日) 22:56:23.57バッチファイルだけで出来るならそれで済ませたいと思いまして・・・
>>668
レスありがとうございます。
for /f "tokens=3" %%a in (test.txt) do @echo %%a で、
下記のように(>>655で書いた末尾の数字のみ)取り出せたのですが、
そこからどうやれば合計を求めることが出来るのでしょうか?
123
456
789
0670デフォルトの名無しさん
2011/06/05(日) 22:57:59.910671デフォルトの名無しさん
2011/06/06(月) 01:28:13.01echo 合計:%T%
遅延環境変数使いたくないならcallで
0672デフォルトの名無しさん
2011/06/06(月) 01:38:31.63> copy /b a.xls b\
> del a.xls
それではa.xlsを実行の段が無いだろw
0673デフォルトの名無しさん
2011/06/06(月) 01:47:59.00> do set /a T=!T!+%%a
set /a 使用時に変数を%や!で囲む必要は無い。常に遅延展開される。
do set /a T=T+%%a でよし。
do set /a T+=%%a でもよし。
一部の特殊な変数は%が必要。上の方でも出てたけど%random%とか。
0674デフォルトの名無しさん
2011/06/06(月) 14:09:57.08レスありがとうございます。
希望通り末尾の数字のみ計算できました!
しかしまれに「演算子がありません。」と表示されるので調べると、
バッチファイルでは小数の計算が出来ないのですね・・・
解決策などありましたらお教え下さい、すみません><
0675デフォルトの名無しさん
2011/06/06(月) 14:18:14.08すみません、よく読んだらxls実行した後に、
終了後削除となっていますね・・・。
実行はstartで出来るとして調べたらプロセスの監視も出来るようですね。
自分のやりたい事もままならないのにしゃしゃってすみませんでした;
0676デフォルトの名無しさん
2011/06/06(月) 18:19:45.971000倍とかして計算すれば?
0677デフォルトの名無しさん
2011/06/06(月) 21:29:18.68レスありがとうございます。
検索して100倍、1000倍で計算の後にその分を割ると・・・
と説明されているのを見て試してみたのですが、
set/a 以降ですでに小数自体が切り捨てられダメでした。
test.txt
aaa bbb ccc 12.3
ddd eee ddd 45.6
ggg hhh aaa 78.9
for /f "tokens=3" %%a in (test.txt) do set /a T=T+1000*%%a
echo 合計:%T%
演算子がありませんでした。〜表示で、
和は整数だけが足された結果の135となってしまいます・・・。
0678デフォルトの名無しさん
2011/06/06(月) 23:09:37.25工夫しようぜ
小数が整数部2桁、小数部1桁固定なら何とかなるでしょ
0679デフォルトの名無しさん
2011/06/07(火) 04:25:39.110680デフォルトの名無しさん
2011/06/07(火) 05:50:38.230681678
2011/06/07(火) 08:01:48.35整数部は何桁でも大丈夫な方法だった
例えば常に、
aaa bbb ccc 12.34
ddd eee ddd 45.00
ggg hhh aaa 78.90
みたいになってればOK(質問者は業務プログラムのバッチファイル部分担当と想定
先行プログラム開発者に小数部の桁数固定を頼んでね)
for /f "tokens=3" %%a in (test.txt) doをネストするか中間ファイル作るかして、
12.34
45.00
78.90
に対して、
forコマンドの「delims=.」オプションで整数部と小数部を.でスプリットして、
別々の変数に格納し、小数部の合計値が小数部桁数を超えたら繰り上がりを変数で保持して
(今回の例では小数部合計134だから、「1」を変数に格納)、
整数部合計と繰り上がり値を足したら最後に、
set final_sum=%int_sum_with_carry%.%float_num%
みたいな感じで文字列連結すればいいんじゃない?
0682デフォルトの名無しさん
2011/06/07(火) 12:03:57.85先頭が0ではないかで分けて、0だった場合は先頭部の0を全部消すといった
作業が必要。
なぜかというと、set /a x=012 というように一桁目が0の時
これは8進数と解釈されるから。x=089などとなった場合はエラーになる。
0683デフォルトの名無しさん
2011/06/07(火) 17:09:08.22わざわざそんなあほうなことしないから
0684デフォルトの名無しさん
2011/06/07(火) 21:24:10.52バッチでは小数演算が出来ないとのことなので、
vbsやwshも考えたのですが余計に分からなくてw;
>>681-683
ありがとうございます。
仰るとおり、一旦数字だけの中間ファイルを作った後、
整数と小数点部分の分離〜それぞれの合計まではできました。
が、小数部分が3桁になった際(例だと134)に1と34を分ける所で躓いてます。
小数部分の変数からオフセット?なるもので ~-2% として後ろ2桁を取り出せても、
百の位の桁はどう検出して整数部分につけるのだろうとか・・・
0685デフォルトの名無しさん
2011/06/07(火) 21:48:05.93四則演算が出来るバッチなるものを検索で見つけたのですが・・・
http://folomy.jp/heart/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=18156
試したところコマンドプロンプトでは小数点含めた数の計算は出来たので、
(test.txt)を上記演算バッチに投げ(読み込ませ)利用できたりしませんでしょうか?;
0686デフォルトの名無しさん
2011/06/07(火) 22:33:28.170687デフォルトの名無しさん
2011/06/08(水) 02:17:21.55rem 小数点以下最大4桁
for /f "tokens=4" %%a in (test.txt) do (
for /f "tokens=1,2 delims=." %%i in ("%%a") do (
set /a x=x+%%i
set /a t=1%%j0000
call set /a y=y+%%t:~0,5%%-10000
)
)
set /a z=x*10000+y
call echo %%z:%z:~-4%=%%.%z:~-4%
0688678
2011/06/08(水) 06:58:50.26例の合計値は正しくは124でしたね。>>682の暗算が間違ってました(恥
あとfloat_numではなくfloat_sumと書いたつもりでした
それはさておき、まず
ser /a carry=%float_sum% / 100 で商を取得し、0だったら繰上げなし。
1以上なら以下コマンドを実行し、整数部合計と小数部繰り上がり(余り)を合計する。
set /a int_sum_with_carry=%int_sum% + %carry%
で最後は必ず
set final_sum=%int_sum_with_carry%.%float_sum%
すればおkかな
0689デフォルトの名無しさん
2011/06/08(水) 07:24:02.75PerlなりRubyなり…昔からある便利な道具を使わない(or使えない)理由は何?
0690デフォルトの名無しさん
2011/06/08(水) 08:38:59.980691デフォルトの名無しさん
2011/06/08(水) 09:44:47.340692デフォルトの名無しさん
2011/06/08(水) 12:00:28.42これを実際にやろうって奴はいないだろ。
もっと簡単便利な言語で書けば終わりなんだし。
逆に言えば普通は出来ない(かもしれない)ことを無理やりでもやろうって所が面白いじゃん。
0693デフォルトの名無しさん
2011/06/08(水) 12:23:22.70基本的には曲芸だと思う、俺も普段バッチは大半がJScriptで書いてる
0694デフォルトの名無しさん
2011/06/08(水) 12:23:53.87> ser /a carry=%float_sum% / 100 で商を取得し、0だったら繰上げなし。
> 1以上なら以下コマンドを実行し、整数部合計と小数部繰り上がり(余り)を合計する。
> set /a int_sum_with_carry=%int_sum% + %carry%
そんな面倒なことしなくても
set /a int_sum_with_carry=float_sum / 100 + int_sum
一行で終わりだろうに。
0695デフォルトの名無しさん
2011/06/08(水) 18:15:46.460696デフォルトの名無しさん
2011/06/09(木) 15:49:54.35いちいち起動させるアプリごとにatコマンドを書かないで済ます方法はないでしょうか?
たとえばこの特定の日時にメモ帳と計算機とペイントを開くバッチなんですが
at 14:50 /interactive /every:M,T,W,Th,F c:\windows\notepad
at 14:50 /interactive /every:M,T,W,Th,F %SystemRoot%\system32\calc.exe
at 14:50 /interactive /every:M,T,W,Th,F %windir%\system32\mspaint.exe
これの
"at 14:50 /interactive /every:M,T,W,Th,F "の部分の記述を
一度だけ書いて起動するアプリごとに書かないで済ますといった感じです。
0697デフォルトの名無しさん
2011/06/09(木) 16:31:23.33バッチファイル
0698デフォルトの名無しさん
2011/06/09(木) 20:11:29.670699デフォルトの名無しさん
2011/06/09(木) 21:11:36.79atコマンドを書き込んだバッチで別のバッチを読み込ませるってことですか?
>>698
変数にコマンドを入れてそれぞれの行の頭に変数を書き込むみたいな感じですかね?
まったく素人で申し訳ないんですがちょっと変数でコマンドを書いていただけないですかね?
いろいろいじっていたんですが、Windows7だとatコマンドで起動アプリのGUIを表示することってできないんですね。
これは不便です。
0700デフォルトの名無しさん
2011/06/09(木) 21:27:25.26%at% c:\windows\notepad
「バッチ 変数」でググるくらいのことはしようね
0701デフォルトの名無しさん
2011/06/09(木) 21:36:57.730702デフォルトの名無しさん
2011/06/09(木) 21:45:37.54一応ぐぐってはみてコマンドも書いてみたんですが動かなかったんです。
どうもありがとうございました。
0703デフォルトの名無しさん
2011/06/09(木) 22:09:24.41これが動くのか?
0704デフォルトの名無しさん
2011/06/10(金) 16:08:32.570705デフォルトの名無しさん
2011/06/10(金) 16:41:15.73…憧れちゃう
だろ?w
0706デフォルトの名無しさん
2011/06/10(金) 17:59:56.120707Win7Home32bit
2011/06/10(金) 23:15:17.11C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
C:\>fc /b C:\Windows\System32\notepad.exe C:\Windows\notepad.exe
ファイル C:\WINDOWS\SYSTEM32\notepad.exe と C:\WINDOWS\NOTEPAD.EXE を比較してい
ます
FC: 相違点は検出されませんでした
0708デフォルトの名無しさん
2011/06/10(金) 23:36:57.73ハードリンクなのに差異なんかあるはずねぇよw
0709デフォルトの名無しさん
2011/06/11(土) 01:27:51.820710デフォルトの名無しさん
2011/06/11(土) 02:07:53.780711デフォルトの名無しさん
2011/06/11(土) 08:58:39.69あれは何のツールだったっけ?
0712デフォルトの名無しさん
2011/06/11(土) 09:45:20.810713デフォルトの名無しさん
2011/06/11(土) 13:47:01.44そのフォルダにパスが通っているんですけど、
javaファイルを実行しようと思ってコマンドプロンプトで java コマンドを打つと
このバッチファイルが実行されてしまいます。バッチファイル名を変えずに
javaコマンドを実行できるようにならないんでしょうか?
そもそも、exeファイルとbatファイルの優先順位がexeファイルより上なんですか?
また、パスの設定でbatファイルのディレクトリの方を先に書いたから、そっちから先に検索するからでしょうか?
0714デフォルトの名無しさん
2011/06/11(土) 13:56:10.830715デフォルトの名無しさん
2011/06/11(土) 13:57:18.270716デフォルトの名無しさん
2011/06/11(土) 14:19:51.53でも、pathはバッチファイルのあるフォルダが先に書いてあります。
という観点でみると、PATHEXTより、PATHの方が優先順位が高いということなんですね。
どうも、みなさん(お一方?)ありがとうございました。すっきりなぞが解けました。
javaコマンドを拡張子付きで、
java.exe と指定すればいいんじゃね?
0719デフォルトの名無しさん
2011/06/12(日) 04:09:49.96そういうバッチファイルってsetjavaとかのが良いよ
まあ.exeまで書けば問題ないけど
0720デフォルトの名無しさん
2011/06/13(月) 16:11:32.83wwwww
0721デフォルトの名無しさん
2011/06/13(月) 16:35:56.180722デフォルトの名無しさん
2011/06/13(月) 19:28:03.350723デフォルトの名無しさん
2011/06/13(月) 20:00:41.07lsとか使えりゃ一発なんだけど、標準の環境じゃファイルIDで検索しまくるしか思いつかん。
0724デフォルトの名無しさん
2011/06/13(月) 20:28:25.920725デフォルトの名無しさん
2011/06/15(水) 17:35:42.600726デフォルトの名無しさん
2011/06/15(水) 19:08:58.72fsutil file queryfileid ファイルA
でファイルIDゲットしてファイルBも同様にやって同じIDならハードリンク。
ただ、ひとつのファイルに対して他に同じIDを持つファイル(=ハードリンク)があるかとか、
その名前は何かとかになると標準コマンドでは対応できんかと。
0727デフォルトの名無しさん
2011/06/16(木) 00:51:28.99@REM FIZZBUZZ.BAT 最短目指して
@SET/A N+=2,F=N%%3,S=N*5
@IF %N:~-1%==0 SET S=Buzz
@IF %F%==0 SET S=Fizz%S:*0=%
@ECHO %S:0=%&IF %N% LSS 200 CALL %0
PAUSE
0728デフォルトの名無しさん
2011/06/16(木) 08:40:29.91setlocal enabledelayedexpansion
for /l %%i in (1,1,100) do (set /a fb=%%i%%15, bu=%%i%%5, fi=%%i%%3
if !fb!==0 ( echo fizzbuzz) else if !bu!==0 ( echo buzz) else if !fi!==0 ( echo fizz) else echo %%i)
pause
0729デフォルトの名無しさん
2011/06/17(金) 00:17:52.47これ参考に書いてみたのですが
setlocal enabledelayedexpansion
set a[0]=%%num%%
set a[1]=Fizz
set a[2]=Buzz
set a[3]=FizzBuzz
for /l %%i in (1,1,100) do (
set /a u=!(%%i%%3)+!(%%i%%5)*2, num=%%i
call echo %%a[!u!]%%
)
pause
+!(%%i%%5)*2 の使い方が誤っています。
と出ます。
コマンドで
set i=15
set /a u=!(%i%%3)+!(%i%%%5)*2
バッチで
set /a u=!(%i%%%3)+!(%i%%%5)*2
とかだと3と結果が出て動くので、何が悪いかわかりません。
わかる人がいれば教えてください。
0730729
2011/06/17(金) 00:26:59.42set /a u=!(num%%3)+!(num%%5)*2
call echo %%a[!u!]%%
)
これも同じように
+!(num%5)*2 の使い方が誤っています。
となりました。お手上げ。
0731デフォルトの名無しさん
2011/06/17(金) 01:11:06.99括弧の対応ぐらいしてくれとは思う
0732デフォルトの名無しさん
2011/06/17(金) 01:18:37.97set a[0]=%%num%%
set a[1]=Fizz
set a[2]=Buzz
set a[3]=FizzBuzz
for /l %%i in (1,1,100) do (set num=%%i
set /a "u=^!(num%%3)+^!(num%%5)*2"
cmd /c call echo %%a[!u!]%%)
pause
0733729
2011/06/17(金) 01:41:43.78レスありがとうございます
)をエスケープしてやる必要があったのですね
動くようにはなりましたが u が 0,2,4,6,8 となっているようで思ったようには動きませんでした
>>732
ちゃんと思ったように動作しました!ありがとうございます!
動作の原理的なことがよくわからないのですが
"で全体をエスケープして且つ、!をエスケープてことなんですよね?
!(num%%3)+!が存在していない環境変数とみなされないようにってことなのかな?
call の部分も cmd /c 付けないと %num% となって展開が足りなかったみたいです
ちゃんと書ける人を見ると自分がなんとなくわかった気がしてるだけで
全然理解出来て無いのがよくわかります
バッチ難しいですねー
C:\>fsutil hardlink list
使用法 : fsutil hardlink list <ファイル名>
例 : fsutil hardlink list c:\foo.txt
C:\ap>fsutil hardlink list C:\Windows\System32\notepad.exe
\Windows\notepad.exe
\Windows\winsxs\x86_microsoft-windows-notepadwin_31bf3856ad364e35_6.1.7600.16385_none_42a023025c60a33a\notepad.exe
\Windows\winsxs\x86_microsoft-windows-notepad_31bf3856ad364e35_6.1.7600.16385_none_6ef0e39ed15350e4\notepad.exe
\Windows\System32\notepad.exe
0735デフォルトの名無しさん
2011/06/18(土) 20:00:13.40list is an invalid parameter.
0736デフォルトの名無しさん
2011/06/18(土) 21:18:47.010737デフォルトの名無しさん
2011/06/18(土) 21:20:12.500738デフォルトの名無しさん
2011/06/18(土) 21:46:29.920739デフォルトの名無しさん
2011/06/21(火) 18:24:58.900740デフォルトの名無しさん
2011/06/21(火) 18:40:32.950741デフォルトの名無しさん
2011/06/21(火) 19:28:05.930742デフォルトの名無しさん
2011/06/21(火) 20:47:08.37ちなみに>>726は嘘です
0743デフォルトの名無しさん
2011/06/21(火) 23:06:01.760744デフォルトの名無しさん
2011/06/23(木) 11:01:42.230745デフォルトの名無しさん
2011/06/23(木) 16:13:37.370746デフォルトの名無しさん
2011/06/23(木) 16:54:42.37echo.
echo ┌───┐
echo │→す │
echo │→せん│
echo └───┘
0747デフォルトの名無しさん
2011/06/23(木) 17:51:38.05できないのか残念です
0748デフォルトの名無しさん
2011/06/23(木) 19:31:31.82残念です
0749デフォルトの名無しさん
2011/06/23(木) 19:44:31.410750デフォルトの名無しさん
2011/06/23(木) 20:59:00.96会社のネットワークプリンタを新規に導入するにあたって、不要のプリンタ設定の削除、新規ポート追加、
既存のプリンタの設定変更、新規プリンタ追加の設定をバッチファイルで処理しようとしてるんだけど、
不要プリンタの削除、既存プリンタの設定変更、新規ポート追加までは共有サーバに置いてる
バッチファイルで正常に動いてるのに、新規に作ったポートでの新規プリンタ追加だけが
自分のpcでは出来て、他のpcでは「アクセス権がない」とけられる現状。何で?
rundll32 printui.dll,PrintUIEntry /r "ポート" /if /b "プリンタ名" /f "共有サーバ上のinf" /m "モデル名" /q /u
引数の順序は違うがこんな感じの追加設定。
ドライバのインストールまでは走るけど、最終的な追加で蹴られちゃいます。
google先生に尋ねても同じような事例は出てこないので誰か助けて。
あ、XPです。
0751デフォルトの名無しさん
2011/06/23(木) 21:46:56.710752750
2011/06/24(金) 19:26:34.38各ユーザーに自分でバッチファイル実行してもらう予定で、
別にアカウントにはプリンタ変更さわれないほどの制限はかけてなかった。
削除とか変更は走るから謎だったんだけど、今日もう一回やったら普通にでけたわ。
昨日できなかった理由がわからん。
けどレスしてくれてありがとね。
0753デフォルトの名無しさん
2011/06/25(土) 04:14:33.97rdpclipを再起動させるバッチを書いたのですが
コマンドプロンプトで一行ずつ実行するのには問題ないのに
バッチで処理するとコマンドプロンプトに戻ってこなくなります
対策があればお願いします
以下書いたバッチ
taskkill /IM rdpclip.exe
rdpclip.exe
バッチファイル名
rerunclip.bat
でSystem32フォルダに入れる
0754デフォルトの名無しさん
2011/06/25(土) 04:28:47.940755デフォルトの名無しさん
2011/06/25(土) 05:06:13.07ありがとうございます
うまくいきました
0756デフォルトの名無しさん
2011/06/28(火) 11:32:40.66リサイズして新たに保存してくれるスクリプトです。
@echo off
set _size="640x480"
rem set /p _size="Resize option (Default:640x480)"
for %%f in (%*) do (
set _new="%%~pf%%~nf.new%%~xf"
echo "Convert %%f"
echo " to --> %_new%"
E:\exe\ImageMagick-6.6.9-8\convert.exe -resize %_size% -quality 20 %%f %_new%
)
echo Done.
pause
上のでは _new に新しいパスが入りません。
どなたか教えてください。
0757デフォルトの名無しさん
2011/06/28(火) 11:51:16.44遅延展開 でググる、
call でこのスレ検索する
0758デフォルトの名無しさん
2011/07/04(月) 22:58:45.20とかのストレージのフォルダを扱うには
どういう風にすればいいっすか
UNCみたく
\\HOSTNAME\ABC\DEF
みたいな指定はできないっすか
WSHとか PowerShell使えば
扱えるっすか?
0759デフォルトの名無しさん
2011/07/04(月) 23:03:25.46できないっす
扱えるっす
07601/2
2011/07/05(火) 00:22:16.07以下のバッチを実行したところ、期待通りの結果になりません。
#ip.bat
@echo off
for /f %%a in (ip.lst) do (
echo ------------------------
ping -n 1 %%a
echo %ERRORLEVEL%
if %ERRORLEVEL% EQU 1 echo pingに失敗
if %ERRORLEVEL% EQU 0 echo pingに成功
)
#ip.lst
127.0.0.1
192.168.0.5
111.111.111.111 <これは通じないIP
07612/2
2011/07/05(火) 00:23:37.60スタート→コマンドプロンプト起動→cd <ip.batのあるディレクトリ>
→>ip.batと実行すると、なぜか全部%ERRORLEVEL%が0になってしまう。
上で、ip.batを実行したコマンドプロンプト上で、↑キーを押して、
再度、ip.batを実行すると、pingこまんどの出力は変わらないのに、%ERRORLEVEL%が1になってしまう。
実行環境はWindows7 ホームプレミアムです。
よろしくお願いします。
0762デフォルトの名無しさん
2011/07/05(火) 00:43:53.65とりあえず、
echo %ERRORLEVEL%
の行は要らない、というか場所がマズすぎる。
もう一度
if /?
を読み直すことをお勧め
errorlevel は
if ERRORLEVEL 1 なにか
で使えるのだから。
あるいは、
>>757
お好きな方で。
0763デフォルトの名無しさん
2011/07/05(火) 06:14:14.690764デフォルトの名無しさん
2011/07/05(火) 11:44:08.38for /f %%a in (ip.lst) do (
echo ------------------------
ping -n 1 %%a
if %ERRORLEVEL%==0 (
echo pingに成功 %ERRORLEVEL%
) else (
echo pingに失敗 %ERRORLEVEL%
)
0765デフォルトの名無しさん
2011/07/05(火) 12:17:44.15× for in () do (if %ERRORLEVEL%==0
○ for in () do (if !ERRORLEVEL!==0
for in () do (if ERRORLEVEL 1 (echo) else (echo) )
0766デフォルトの名無しさん
2011/07/05(火) 13:20:53.46if errorlevel 0
とやってしまわないよう注意。
if not errorlevel 1
こっちを使う。
0767デフォルトの名無しさん
2011/07/05(火) 13:29:16.99pingが通らなかった時にerrorlevelが0になるパターンがあるから。
destination host unreachable はそのひとつ。
同じ条件でもOSによって反応が違ったりするんで当てにならない。
errorlevelでなく、forで出力を受けて解析したほうがいい。
0768デフォルトの名無しさん
2011/07/05(火) 14:58:36.700769デフォルトの名無しさん
2011/07/05(火) 21:45:21.02ありがとう
このさいPowerShellの勉強でも始めるよ
ググって自分で勉強しようと思うんだけど
下記みたいなこういうパスの正式名称がわからないから
検索キーワード教えて
"マイ コンピュータ\(デジカメとかポータブルメディアプレイヤーとかの機種名)\Device Storage "
0770761
2011/07/07(木) 23:04:55.90大変参考になりました。ものすごく作成が進みましたありがとうございます。
続けてで大変恐縮なのですが(以下、字数制限の為省略してかいております。)
0771761
2011/07/07(木) 23:06:13.02call :pin
call :netmount
)
:pin
ping -n 1 %ipaddr% | find "TTL"
set pingerr=%errorlevel%
(以下、%pingerr%によって判定。)
ブルーチンpinが失敗したら、:netmountは実行しないというのに良い方法はありますでしょうか。
(具体的には記載は見つからなかったのですが、for 内でgotoやgotoのとび先指定はどうも使えないようなので)
0772デフォルトの名無しさん
2011/07/07(木) 23:59:14.87for /f %%a in (yamada.,txt) do
call :pin
call :netmount
<:pinがエラーならここに飛ぶ処理> <こんなしょり
)
:pin
ping -n 1 %ipaddr% | find "TTL"
set pingerr=%errorlevel%
こんな処理ができれば最高です。
よろしくお願いします。
0773デフォルトの名無しさん
2011/07/08(金) 00:26:09.42じゃだめなん?
call :pin
if errorlevel 1 goto :jump
call :netmount
:jump
〜
exit /b
:pin
〜
exit /b %pingerr%
0774773
2011/07/08(金) 00:30:48.92誰かが暇つぶしにもっと良いものを書いてくれるかもしれんぞ。
0775デフォルトの名無しさん
2011/07/08(金) 00:39:50.14for /f %%a in (yamada.,txt) do (call :sub %%a)
とかでcallで一時的にサブルーチンに逃げれば:subの中でgotoも更にcallも使えるよ
0776デフォルトの名無しさん
2011/07/08(金) 02:22:48.42使えるが
使えないのはラベルのほうだろ
0777デフォルトの名無しさん
2011/07/08(金) 12:19:41.59理由が何かあるのか?
forの中で分岐する必要がないだろ。
0778デフォルトの名無しさん
2011/07/08(金) 12:36:21.24>ブルーチンpinが失敗したら、:netmountは実行しないというのに良い方法はありますでしょうか。
試してないけど、
call :pin
call :netmount
を1行にまとめて、
call :pin && call :netmount
としたら上手く行きませんか?
0779デフォルトの名無しさん
2011/07/09(土) 18:29:12.21その中身を読み込みnewtimeという一時変数に格納したいんですがどうやればいいんでしょうか
set newtime = (type time.txt)
set newtime = & type time.txt
等々色々試してみたんですが上手く行きません。
上手くsetする方法をどうぞお教えください。
実行環境はWindows7 Ultimateです。
0780デフォルトの名無しさん
2011/07/09(土) 18:37:51.540781デフォルトの名無しさん
2011/07/09(土) 19:33:28.51助かりました、ありがとうございます
勉強不足もいいところ、しっかりと学習してきます
0782デフォルトの名無しさん
2011/07/09(土) 21:03:38.42横からだが...
こんなことできるんだ。
俺も勉強になったよ。
0783デフォルトの名無しさん
2011/07/09(土) 22:21:40.24set /p x=
set /p y=
) < a.txt
もよろしく
0784デフォルトの名無しさん
2011/07/12(火) 12:24:12.47うまくいきません・・ CMDウインドウが開いて残るだけです
start "G:\FREESOFT\ProxN45j\Proxomitron.exe"
start "G:\FREESOFT\sleipnir166\Sleipnir.exe"
start "G:\FREESOFT\DoeView06120\Jane2ch.exe"
start -wait "G:\FREESOFT\TF1610\TF.exe"
ウエイトオプションをつけて一気じゃなくて前のソフトの
HDDカリカリが終わってから起動したいんです。
なにとぞお力をおかしください 願います
0785デフォルトの名無しさん
2011/07/12(火) 12:55:00.19START ["タイトル"] [/Dパス] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [コマンド/プログラム]
[パラメータ]
start "タイトルはなんでもいい無くてもいいが二重引用符は残すこと" /wait "G:\FREESOFT\TF1610\TF.exe"
カレントごと移動する必要があるならこっち
start "" /d "G:\FREESOFT\TF1610" /wait "TF.exe"
start "" /d "C:\TEMP" /wait "G:\FREESOFT\TF1610\TF.exe"
0786デフォルトの名無しさん
2011/07/12(火) 14:14:41.10> HDDカリカリが終わってから起動したいんです。
無理。
スリープ入れるとか、HDD使用率を監視するとか、それっぽい事は出来なくもないが。
startを連続で入れるんじゃ無理。
0787デフォルトの名無しさん
2011/07/12(火) 15:50:39.64ウエイトオプションをつけて一気、じゃなくて
どっちで切るかで意味合いが変わってくるなw
質問するなら紛らわしい書き方するな
> HDDカリカリが終わってから起動
どちらにせよこれを厳密にやろうとすると面倒。てかバッチで無理じゃね?
まあどっちにせよ>>785->>786で聞きたいことの解答は足りてるぽいな
0788デフォルトの名無しさん
2011/07/12(火) 15:53:59.420789デフォルトの名無しさん
2011/07/12(火) 16:03:39.40> ウエイトオプションをつけて、一気じゃなくて
> ウエイトオプションをつけて一気、じゃなくて
start の /wait の事だから結局一緒だと思うが。
0790デフォルトの名無しさん
2011/07/12(火) 16:20:53.280791デフォルトの名無しさん
2011/07/12(火) 17:38:46.69しかし、startupdelayerを導入することにしました。
これから設定してみます。 応えてくださったのにすみません
みやすたーとあっぷもよいでしょうが高機能っぽいのです
また質問させてください
ファイラはTF.exeを使っているのですが
あるフォルダを選択して右クリック送るから
そのフォルダの名前を取得してその中に同名からフォルダを
任意の階層で作るbatがほしいのです。
あとZドライブなどのルートの中のフォルダにある
txtファイルをすべて切り取って任意の場所に
スマートに移動するbatもほしいのです。
よろしくお願いします
0792デフォルトの名無しさん
2011/07/12(火) 18:47:24.25組み合わせてがんばれ
0793デフォルトの名無しさん
2011/07/12(火) 19:25:04.600794デフォルトの名無しさん
2011/07/12(火) 19:43:37.49ここは作ってくれスレじゃねーから
0795デフォルトの名無しさん
2011/07/13(水) 17:22:25.91どのようにすれば良いでしょうか。
c:\123\456\789\abc.txt
の時に abc.txt のある 789 だけ得る、のような場合です。
0796デフォルトの名無しさん
2011/07/13(水) 17:39:18.060797デフォルトの名無しさん
2011/07/13(水) 17:53:44.670798デフォルトの名無しさん
2011/07/13(水) 18:27:08.83set cd=c:\123\456\789\abc.txt
とかしてなければabc.txtにはならないよ。 %cd%はカレントディレクトリだから。
>>795
パスから親ディレクトリ名が欲しいなら call とか for で %~dp とかの
修飾子と >>796みたいな set の置換を組み合わせると出来るかな
callやバッチの引数からなら %~0\..\ とか。
修飾子については call /?
0799デフォルトの名無しさん
2011/07/13(水) 18:27:57.480800デフォルトの名無しさん
2011/07/13(水) 18:35:25.570801デフォルトの名無しさん
2011/07/13(水) 18:37:09.47あたま悪そう
0802デフォルトの名無しさん
2011/07/13(水) 18:38:07.340803デフォルトの名無しさん
2011/07/13(水) 19:07:29.560804デフォルトの名無しさん
2011/07/13(水) 20:50:30.33796は昔からある方法だが…
知らないの?
それとも理解できないのかな?
0805795
2011/07/13(水) 20:54:40.46>>796
大変参考になりました。
>>798
%~0\..\ を使った完全版を考えて見ましたがちょっと分かりませんでした。
>>799,802
4つ目とは限らないので \ を数えないといけないのですが数える方法が
わかりませんでした。
>>803
『ECHO は <ON> です。』になってしまいました、意図は分かるのですが
%~dpJ や %~tJ が良くてなぜ %~nxJ が『ECHO は <ON> です。』になるのかが分かりません……。
0806795
2011/07/13(水) 20:56:20.50set nanika=C:\123\4 5 6\7(((8)9\あいう\abc.txt
for /f "usebackq delims=" %%i in (`echo "%nanika%"`) do (
set dirpath=%%~dpi
)
set dirpath=%dirpath:~0,-1%
%dirpath:\=&set dirname=%
echo %dirname%
ありがとうございました。
0807デフォルトの名無しさん
2011/07/13(水) 21:26:19.340808デフォルトの名無しさん
2011/07/13(水) 21:39:08.27%a:\=&set b=%
call set a=%%a:\%b%=%%
%a:\=&set b=%
echo %b%
0809795
2011/07/13(水) 22:13:46.75>>807
なるほど、理解できました。
言われてみればしごく当たり前というか自分で気がつけという話でしたね、お手数かけました。
>>808
call で尻尾を削るとか発想が全く無かったです。
私にとって「 call で変数」は敷居が高いです……。
あと、気がついたので自己レス
>>806
みたいにするなら set _dummy=%dirpath:\=&set dirname=% のようにしておいた方が安全というか
後で面倒が無さそうですね。
0810デフォルトの名無しさん
2011/07/13(水) 22:20:04.370811デフォルトの名無しさん
2011/07/14(木) 01:11:42.240812デフォルトの名無しさん
2011/07/14(木) 08:03:39.380813デフォルトの名無しさん
2011/07/14(木) 15:10:36.91%a:\=&set b=%
call set a=%%a:\%b%=%%
%a:\=&set b=%
echo %b%
0814デフォルトの名無しさん
2011/07/14(木) 15:54:07.760815デフォルトの名無しさん
2011/07/14(木) 16:12:27.96%a:\=&set b=%
call set a=%%a:\%b%=%%
%a:\=&set b=%
echo %b%
0816デフォルトの名無しさん
2011/07/14(木) 23:35:45.80rem. %a:\=&set b=%&
call set a=%%a:\%b%=%%&
rem. %a:\=&set b=%&
echo %b%&
0817デフォルトの名無しさん
2011/07/15(金) 03:17:08.60rem. %a:\=&set b=%&
call set a=%%a:\%b%=%%&
rem. %a:\=&set b=%&
echo %b%&
456
0818デフォルトの名無しさん
2011/07/19(火) 07:08:48.38が行けるかと思ったら駄目だった…
for使わずこれくらい簡単に出力をキャプチャする方法はないのかな。
0819デフォルトの名無しさん
2011/07/19(火) 14:46:20.920820デフォルトの名無しさん
2011/07/19(火) 15:19:19.100821デフォルトの名無しさん
2011/07/20(水) 15:06:06.68001.jpg 002.jpg 003.jpg 004.jpg...といった結果になりますが
コレを逆さの004から呼び出す事は可能ですか
004.jpg 003.jpg 002.jpg 001.jpg
0822デフォルトの名無しさん
2011/07/20(水) 15:18:25.220823デフォルトの名無しさん
2011/07/20(水) 15:33:10.27ヘルプの-降順ってそういう意味だったんですね
ありがとうございます
0824デフォルトの名無しさん
2011/07/20(水) 19:18:38.090825デフォルトの名無しさん
2011/07/23(土) 12:34:50.31pushd "%~dp1"
"%~f0" "%CD%"
この2行。何してるの?
0826デフォルトの名無しさん
2011/07/23(土) 14:22:36.28call /?
set /?
0827デフォルトの名無しさん
2011/07/23(土) 14:49:03.31以降のコマンドがそのまま実行されてるな。
ファイルパスがおかしくなるからエラーで実行はされないけど。
0828デフォルトの名無しさん
2011/07/23(土) 15:31:44.350829デフォルトの名無しさん
2011/07/23(土) 17:42:54.570830デフォルトの名無しさん
2011/07/23(土) 18:26:26.200831デフォルトの名無しさん
2011/07/24(日) 00:38:43.110832デフォルトの名無しさん
2011/07/24(日) 00:47:55.34文字通り、見ればわかる
0833デフォルトの名無しさん
2011/07/24(日) 00:54:28.28%0はそのバッチ自身。あとはわかるな?
0834デフォルトの名無しさん
2011/07/24(日) 01:07:54.54set /a n+=1
pause
%0
0835デフォルトの名無しさん
2011/07/24(日) 01:52:15.81スレみたりechoしてみたらわかりました
再帰処理のようなことをしてたのか!
で↓で再帰を抜け出してる・・・とふむふむ
dir /a:d "%~1">NUL 2>&1
if %errorlevel% EQU 0 goto top
0836デフォルトの名無しさん
2011/07/24(日) 04:44:07.19このバッチファイル自身を、渡されたファイルを格納しているディレクトリ名に変えて改めて実行する
その上の行で
渡されたのがディレクトリか、それ以外のファイルかをチェックしてるので
最終的に欲しいのはディレクトリ名なのだろう
しかし、そのコードって>>825の後にgoto :eofは要らないのだろうか
0837デフォルトの名無しさん
2011/07/24(日) 16:56:05.600838デフォルトの名無しさん
2011/07/24(日) 18:06:45.20なんてやると無限ループしない?
0839デフォルトの名無しさん
2011/07/24(日) 20:04:00.98dirは\があってもなくても同じ結果だけど
%~nx1は結果が違う。
0840デフォルトの名無しさん
2011/07/27(水) 19:16:22.460841デフォルトの名無しさん
2011/07/28(木) 02:14:53.60サブフォルダが作成されます。一年以上前のサブフォルダ以下を削除したいのですが、
調べながら自分で作ってみて一部よくわからないところがあります。
CD "C:\test"
SET YYYY=%DATE:~0,4%
SET MM=%DATE:~5,2%
SET DD=%DATE:~8,2%
SET /A Z=(%YYYY%-1)*10000+%MM%*100+%DD%
FOR /D %%A IN (*) DO (
IF %%A LSS %Z% (
RD /S /Q %%A
)
)
0842841
2011/07/28(木) 02:16:59.09つづきです。
上記の「FOR /D %%A IN (*) DO 」の部分があまりよくわかっていません。
(*):カレントディレクトリ(C:\test)以下の、/D:フォルダに対して
%%A:FORで繰り返される分の各ディレクトリ名(例 C:\test\20110728) に対して、
DO以下を実行しなさい。という解釈であっているでしょうか?
0843デフォルトの名無しさん
2011/07/28(木) 03:57:36.390844デフォルトの名無しさん
2011/07/28(木) 06:45:41.13分からないなら、FORの中身をECHOなどに変えてみることだ。
0845デフォルトの名無しさん
2011/07/28(木) 11:59:43.26> SET /A Z=(%YYYY%-1)*10000+%MM%*100+%DD%
/a オプション使った場合は一部の特殊なもの(%random%とか)を除いて
変数を%で囲む必要ないぞ。
このためforの中でcallとか遅延展開とか使わずに計算できたりと便利。
0846デフォルトの名無しさん
2011/07/28(木) 12:16:48.66forfiles使え
0847デフォルトの名無しさん
2011/07/28(木) 13:22:10.290848デフォルトの名無しさん
2011/07/28(木) 17:33:28.29聞いてねーことペラペラレスしてんじゃねーよバカ
0849デフォルトの名無しさん
2011/07/28(木) 18:46:56.270850デフォルトの名無しさん
2011/07/28(木) 18:55:49.720851デフォルトの名無しさん
2011/07/28(木) 19:29:07.300852デフォルトの名無しさん
2011/07/28(木) 19:33:58.650853デフォルトの名無しさん
2011/07/28(木) 19:52:55.510854デフォルトの名無しさん
2011/07/28(木) 22:39:45.090855デフォルトの名無しさん
2011/07/28(木) 22:51:47.590856デフォルトの名無しさん
2011/07/28(木) 22:56:21.58Win2kだと誤動作するし
0857デフォルトの名無しさん
2011/07/28(木) 23:11:09.09聞いてねーことペラペラレスしてんじゃねーよバカ
0858デフォルトの名無しさん
2011/07/28(木) 23:33:02.840859デフォルトの名無しさん
2011/07/28(木) 23:44:51.23echo %outText%>>test.txt
test.txt中身予定
****************
****************
****************
こんな感じに作りたいと思っているんだけどなかなかうまくできない
助けて!
0860デフォルトの名無しさん
2011/07/28(木) 23:56:04.590861デフォルトの名無しさん
2011/07/29(金) 00:00:19.37@echo off
rem 改行を入れる
set LF=^
rem
set caption=説明文%LF%説明文2
SET /P x=%caption%<NUL>out.text
goto :EOF
こうすると結果
out.text
説明文1
となってしまうorz
0862デフォルトの名無しさん
2011/07/29(金) 00:08:43.190863デフォルトの名無しさん
2011/07/29(金) 00:11:25.06SET x=aaa!LF!bbb
ECHO !x!>>out.txt
こういう方法ですね。改行を入れることができました。ありがとうございます。
gdgdとすみませんがテキストで開くと↑のようなマークになってしまうんですが回避する方法はないでしょうか・・・orz
0864デフォルトの名無しさん
2011/07/29(金) 00:19:51.420865デフォルトの名無しさん
2011/07/29(金) 00:24:39.44CR入れたら無事直りました!
時々TEXTで開くと↑になってるのってUNIX系でかかれた文章だったんですね
どうもありがとうございました!
0866841
2011/07/29(金) 03:58:35.53>851
0時前後に実行するとまずいということですね。
>854
バッチをCドライブに置くか、
cd /Dでドライブ移動するようにします。
>856,858
なぜエラーが起きるのでしょうか?
8月になったら試してみます。
0867デフォルトの名無しさん
2011/07/29(金) 04:06:22.16SET DD=%2011/08/01:~8,2%
だとMMDDは0701になる
set /a 08
0868デフォルトの名無しさん
2011/07/29(金) 09:14:58.15crやlfってtimeやerrorlevelみたいな標準の環境変数なの?
それとも遅延環境変数有効時に、!でくくった場合のみ使える環境変数?
0869デフォルトの名無しさん
2011/07/29(金) 16:14:20.120870868
2011/07/29(金) 18:48:43.31前者?後者?
どっちがそうなの?
0871デフォルトの名無しさん
2011/07/29(金) 19:15:11.020872デフォルトの名無しさん
2011/07/29(金) 20:18:08.150873727
2011/07/30(土) 18:07:14.45@SET/A N+=1,F=N*N%%3,B=N%%5,S=N*F
@IF %B%==0 SET S=%F:1=%Buzz
@ECHO %S:0=Fizz%&IF %N% LEQ 99 CALL %0
0874デフォルトの名無しさん
2011/07/30(土) 18:12:05.890875デフォルトの名無しさん
2011/07/31(日) 05:28:52.89copy "%~1" "E:\ts"
↑のようなbatで2.5GBくらいのTSファイルをコピーすると
ファイルが破損してしまいます(ハッシュで確認)
軽めのtxtをコピーさせたところ破損していなかったので、ファイルの容量が問題になっていると思います
どうすれば破損させずに大きいファイルをコピーできるのでしょうか。
コピー先もコピー元もそれぞれNTFSフォーマットされたUSB2.0の外付けHDDです。
0876デフォルトの名無しさん
2011/07/31(日) 06:00:38.56/V 新しいファイルが正しく書き込まれたか検査します。
0877デフォルトの名無しさん
2011/07/31(日) 10:27:47.84できました。めちゃくちゃ初歩的なことで質問して申し訳ありませんでした
0878デフォルトの名無しさん
2011/07/31(日) 15:22:56.850879デフォルトの名無しさん
2011/07/31(日) 17:06:41.610880841
2011/08/02(火) 00:06:34.43バッチ実行してみると、確かにエラー起きました。。。
「無効な数値です。・・・」
調べてみると、08 や09 は、8進数と認識して、
エラーが起きるようですね。。
以下のように書き換えて対応してみます。
SET YYYY=%DATE:~0,4%
SET MM=%DATE:~5,2%
SET DD=%DATE:~8,2%
SET /A MM=1%MM%-100
SET /A DD=1%DD%-100
SET /A Z=(%YYYY%-2)*10000+%MM%*100+%DD%
・・・というか上記は慣れてる人じゃないと気付かないですよね。。
ここに聞いてよかったです!ありがとうございました!!
0881デフォルトの名無しさん
2011/08/02(火) 11:56:04.93set /a z=%d:~-10,4%%d:~-5,2%%d:~-2%-20000
0882デフォルトの名無しさん
2011/08/02(火) 12:58:34.780883デフォルトの名無しさん
2011/08/02(火) 13:35:26.59教えていただけますか。
拡張子を除いたファイル名だけの一覧を取得したい のですが、
dir /b /a-d "パス" では、
aaa.jpg
bbb.txt
などと拡張子が入ってしまいます。
aaa
bbb
となるようにするにはどうすれば良いのしょうか。
スレ違いでしたら誘導お願いいたします。
よろしくお願いいたします。
0884デフォルトの名無しさん
2011/08/02(火) 13:44:24.220885デフォルトの名無しさん
2011/08/02(火) 14:20:49.83早速のレスありがとうございます。
できました!
こうやるんですね…。
勉強致します。
ありがとうございました。
0886デフォルトの名無しさん
2011/08/02(火) 21:07:04.680887デフォルトの名無しさん
2011/08/03(水) 20:55:12.28ダブルクリックで開かれたくないので.batを.datに変えてcallしようと考えているのですが
0888デフォルトの名無しさん
2011/08/03(水) 21:02:49.53> バッチファイル上でプログラムを指定して開く事は可能ですか
はい
> ダブルクリックで開かれたくないので.batを.datに変えてcallしようと考えているのですが
意味がわからん
0889デフォルトの名無しさん
2011/08/03(水) 21:11:43.98> バッチファイル上でプログラムを指定して開く事は可能ですか
意味がわからん
> .batを.datに変えてcallしようと考えているのですが
できない
> ダブルクリックで開かれたくないので
デフォルト動詞をeditかダミーに変える
batfile\shell
@="edit"
cmdfile\shell
@="none"
0890デフォルトの名無しさん
2011/08/03(水) 21:42:45.40callする直前にリネームして終了時に再リネームするとか。
0891デフォルトの名無しさん
2011/08/03(水) 21:52:21.48とかは?
0892デフォルトの名無しさん
2011/08/03(水) 21:53:39.660893デフォルトの名無しさん
2011/08/04(木) 00:27:52.70メインに
call yobidasuyo.cmd yobarete hoge
こんな感じで書いて
サブの頭に
set jikkou=%1
if not "%jikkou%"=="yobarete" (
echo 単独で実行しないで
pause
goto :EOF
)
こンな感じで受けてたわ
0894デフォルトの名無しさん
2011/08/04(木) 02:19:56.210895デフォルトの名無しさん
2011/08/04(木) 02:40:37.580896デフォルトの名無しさん
2011/08/04(木) 09:37:17.590897デフォルトの名無しさん
2011/08/04(木) 15:37:35.12中の.batを.datに書き換えて
dat.exe /c hoge.dat
ならできるぞ
0898デフォルトの名無しさん
2011/08/04(木) 20:51:37.340899デフォルトの名無しさん
2011/08/04(木) 23:00:22.310900デフォルトの名無しさん
2011/08/05(金) 03:41:55.96全体の処理にどのくらいかかってるのかが知りたいので
0901デフォルトの名無しさん
2011/08/05(金) 09:56:38.880902デフォルトの名無しさん
2011/08/05(金) 10:19:29.17DOSコマンドでバイナリファイルの置換なんてできるの?
0903デフォルトの名無しさん
2011/08/05(金) 10:26:53.250904デフォルトの名無しさん
2011/08/05(金) 10:45:20.16はぁ?バイナリファイル?
0905デフォルトの名無しさん
2011/08/05(金) 10:49:54.41なんだコイツ?
0906902
2011/08/05(金) 11:38:29.84であれば、バイナリファイルの編集手段が必要ではありませんか?
0907デフォルトの名無しさん
2011/08/05(金) 12:02:20.36分からないならいいよw
0908デフォルトの名無しさん
2011/08/05(金) 14:40:06.67debug.com
0909デフォルトの名無しさん
2011/08/06(土) 00:04:17.05timeで取れるのかありがとう
0910デフォルトの名無しさん
2011/08/06(土) 03:01:55.46dateとtimeの間に日替わりしたら…
0911デフォルトの名無しさん
2011/08/06(土) 18:47:25.15↓このような事をしたいです。
for 〜 (
if %%i==aaa* goto EXIT
)
0912デフォルトの名無しさん
2011/08/06(土) 19:15:09.39比較文字列に正規表現っぽいものを使いたいのなら findstrでerrorlevelみて判定。
その例みたいに単純に先頭3文字で比較判定したくて簡単にやるにはこんなのとかかな。
for %%i in () do (set a=%%i
〜
)
if %a:~0,3%==aaa (
)
ifもfindstrも判定する文字列にダメ文字があったりするが。
0913デフォルトの名無しさん
2011/08/06(土) 20:22:51.290914デフォルトの名無しさん
2011/08/06(土) 20:26:36.95ありがとうございます
if文前に事前にsetで適当な変数に入れておけば簡単な比較は出来そうですね
0915デフォルトの名無しさん
2011/08/06(土) 21:26:35.64指摘されてるが、遅延展開しねーとerrorlevelの数値が変わらんぞ
0916デフォルトの名無しさん
2011/08/06(土) 23:20:33.040917デフォルトの名無しさん
2011/08/07(日) 00:25:01.430918デフォルトの名無しさん
2011/08/07(日) 00:52:20.97バカそうな>>915とかはやってるんじゃねーか?
0919デフォルトの名無しさん
2011/08/07(日) 02:06:08.110920デフォルトの名無しさん
2011/08/07(日) 02:18:48.550921デフォルトの名無しさん
2011/08/07(日) 02:37:16.79if errorlevel==0 echo %errorlevel%
0922デフォルトの名無しさん
2011/08/07(日) 02:39:33.57if %errorlevel%==0 echo %errorlevel%
0923デフォルトの名無しさん
2011/08/07(日) 02:41:03.17≠0をやるのは多少めんどくさいが大抵の場合1未満と1以上で事足りる
if errorlevel 1 (echo 1以上) else (echo 1未満)
0924デフォルトの名無しさん
2011/08/07(日) 02:46:07.490925デフォルトの名無しさん
2011/08/07(日) 03:13:46.660926デフォルトの名無しさん
2011/08/07(日) 03:31:53.140927デフォルトの名無しさん
2011/08/07(日) 17:09:50.020928デフォルトの名無しさん
2011/08/09(火) 23:35:13.810929デフォルトの名無しさん
2011/08/09(火) 23:36:58.370930928
2011/08/09(火) 23:45:57.45windows7ではそのファイルはなかった…でもありがとう!
Microsoft Download Centerとかでntcmds.chm配布してくれないかなー
0931928
2011/08/10(水) 00:01:36.72http://d.hatena.ne.jp/IIJIMAS/20101101/1288542425
http://kogelog.wordpress.com/2011/02/05/20110205-01/
http://www.microsoft.com/download/en/details.aspx?id=2632
>the use of the command-line tools used to perform various tasks related to
>Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows 7, and Windows Vista.
日本語版chmはなさそう
0932デフォルトの名無しさん
2011/08/10(水) 00:58:10.440933デフォルトの名無しさん
2011/08/10(水) 01:53:39.88Using batch files http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
これが求めるものに近いけど、例えばDOSパーサーでコマンドと引数との間に空白なしでも認識される挙動
(例「for/?」) が何故そうなるかの説明は載ってなさそう。
0934デフォルトの名無しさん
2011/08/12(金) 00:52:44.250935デフォルトの名無しさん
2011/08/13(土) 05:24:17.89insideもんだろ
0936デフォルトの名無しさん
2011/08/13(土) 10:01:52.79終了はtaskkill で終了させたのですが
ソフトの起動が以下の文を実行すると、両方ともコマンドプロンプトが立ち上がったままになっていまいます。
A
c:\soft\freesoft.exe
exit
B
start c:\soft\freesoft.exe
exit
exeファイルの実行後、コマンドプロンプトが終了するような方法ってないでしょうか。
0937デフォルトの名無しさん
2011/08/13(土) 13:26:43.61start /?
0938デフォルトの名無しさん
2011/08/13(土) 16:28:02.13言語仕様のことが何で「コマンドリファレンス」になってる
その区別もつかんのか
0940デフォルトの名無しさん
2011/08/13(土) 17:33:44.24文脈の区別もつかんのか
0941デフォルトの名無しさん
2011/08/23(火) 07:18:30.23---------------------------
@echo off
set fname="test"
start test.bat
pause
---------------------------
test1.bat
---------------------------
@echo off
echo "%fname%"
set fname=testl
echo "%fname%"
pause
---------------------------
なぜかウインドウが無限に出てくる。
0942デフォルトの名無しさん
2011/08/23(火) 07:20:59.540943デフォルトの名無しさん
2011/08/23(火) 07:41:37.320944デフォルトの名無しさん
2011/08/23(火) 07:58:23.11ファイル名を間違えていのか・・・
修正したら無限にウインドウが出てこなく成った
for /d %%A in (*) do (
マルチコア非対応のプログラム
)
マルチコア非対応のプログラムを文で実行すると
コアを1つしか使わない為、CPU使用率が25%でしか動作しない
バッチで常に4つのプログラムが並列に動作しているようにする事は可能?
0945デフォルトの名無しさん
2011/08/23(火) 13:47:10.280946デフォルトの名無しさん
2011/08/23(火) 14:18:05.69start マルチコア非対応のプログラム
)
0947デフォルトの名無しさん
2011/08/23(火) 14:54:39.67exit いらんよ
>>941
pasue いらんよ
exit いるよ
0948デフォルトの名無しさん
2011/08/26(金) 09:46:49.990949デフォルトの名無しさん
2011/08/26(金) 15:49:39.60いらんよ
0950デフォルトの名無しさん
2011/08/26(金) 17:40:39.06http://www.michaelv.org/
0951デフォルトの名無しさん
2011/08/30(火) 15:46:42.72録画の為に目的時間の5分前に起動するようにタスクを設定しているのですが
たまにその5分の間に手動でスリープさせてしまって録画をミスることがあります。
その手動操作の時に5分以内に実行されたタスクが無いかどうか
確認して実行済みが無い場合だけスリープに入るようにしたいのです。
自動で入るスリープに関してはタスク実行時に電源スキームを
書き換えてスリープに入らないようにしているので問題は無いのですが
問題はうっかりやってしまう手動(バッチコマンド起動)によるスリープです。
OSはWin7です。
0952デフォルトの名無しさん
2011/08/30(火) 22:52:22.14という処理で
%1がaaa&bbbだった場合
set x=aaa
bbb
というふうに&で分かれてしまいます
xに%1の値をセットするにはどう書けばいいんですか。
set x="%~1"
だとxに""が入ってしまいます。
0953デフォルトの名無しさん
2011/08/31(水) 00:52:50.580954デフォルトの名無しさん
2011/09/02(金) 01:29:12.63>という処理で
>%1がaaa&bbbだった場合
>set x=aaa
>bbb
>というふうに&で分かれてしまいます
どのバージョン?
0955デフォルトの名無しさん
2011/09/02(金) 14:47:58.670956デフォルトの名無しさん
2011/09/02(金) 14:56:41.040957デフォルトの名無しさん
2011/09/03(土) 20:31:44.88for %%1 in (%1) do set x=%%~1
でいいよ
0958デフォルトの名無しさん
2011/09/03(土) 23:22:01.150959デフォルトの名無しさん
2011/09/04(日) 14:01:11.63タスクで毎日起動させて削除したいのですが、ヒントはいただけないでしょうか?
0960デフォルトの名無しさん
2011/09/04(日) 14:09:51.27for/?
del
で十分だろ
0961デフォルトの名無しさん
2011/09/04(日) 14:19:23.04ttp://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html
計算なんてやってられんから、
ファイルが毎日できるのが確実なら、
yyyymmdd.logを新しいもの順にソートして
上から60個以降を削除、というアプローチはどうだろうか。
dir /b /o-dとかをテンポラリファイルに書いて、
for でskip=60とかやってテンポラリファイルの60行以降をdelとか。
0962デフォルトの名無しさん
2011/09/05(月) 02:16:10.250963デフォルトの名無しさん
2011/09/05(月) 07:07:04.09墓穴を掘るだけだぞ
0964デフォルトの名無しさん
2011/09/05(月) 08:44:52.12レスありがとうございます。
何分バッチ作成初体験なので戸惑っております。
とりあえず
dir *.log /o-d
でファイルを表示させるところまではわかったのですが、
その後のfor文とdel文の書き方がよくわかりません……。
0965デフォルトの名無しさん
2011/09/05(月) 08:46:26.230966デフォルトの名無しさん
2011/09/05(月) 08:47:27.50http://www.atmarkit.co.jp/fwin2k/operation/psh01/psh01_01.html
Get-ChildItem | Where-Object {$_.LastWriteTime -lt (Get-Date).AddMonths(-6)} | ForEach-Object {$_.Delete()}
0967デフォルトの名無しさん
2011/09/05(月) 11:10:46.88dir /b /o-d *.log > temp.$$$
for /f "skip=30" %%i in (temp.$$$) do del %%i
del temp.$$$
バッチファイルはこんな感じか。
このサンプルだとログのおいてるフォルダにバッチファイルが
あることになってるけど、そこは適宜置き換えて。
0968デフォルトの名無しさん
2011/09/05(月) 11:52:20.52for /f "skip=30" %%i in ('dir /o-d /b *.log') do del %%i
0969デフォルトの名無しさん
2011/09/05(月) 12:23:40.75helpにちゃんと載ってたけどw
0970デフォルトの名無しさん
2011/09/05(月) 19:20:57.94for /f "usebackq skip=30" %%i in (`dir /o-d /b *.log`) do del %%i
0971デフォルトの名無しさん
2011/09/06(火) 02:28:07.48>>968とほぼ同じ感じで提出したところ、
「やっぱ日付を取得して30日前以前のを削除するようにして」
と言われたので今度は日付の取得にチャレンジしたいと思います。
動作的には変わらないはずなのに何なんだ_| ̄|○
なので、とりあえず、ファイル名は必ずファイルの日付と合ってると仮定しよう。
しかしそれでも、YYYYMMDD.txtは file1_YYYYMMDD.txt とか YYYYMMDDhhmmss.txt に変わってくる。
0974デフォルトの名無しさん
2011/09/06(火) 06:59:44.74・今日の日付とファイルのタイムスタンプを文字列で取得
・文字列を切り貼りしset /aを駆使して0000(2000?)年1月1日からの経過日数を算出(当然閏年も考慮)
・引き算して30以上なら削除
なんだろうけどあまりにもだるすぎるな。バッチで日付操作は鬼門。
PowerShellとは言わないまでもせめて判定部分にVBS使えないのか。
>today = Now
>d = DateSerial(Year(today), Month(today), Day(today)-30)
forfiles使用可なら一発なんだけどそれも無理なんだろうな
> forfiles /P "E:\logs" /M *.log /C "cmd /c if @isdir==FALSE del /s @path" /D -30
0975デフォルトの名無しさん
2011/09/06(火) 14:48:02.440976デフォルトの名無しさん
2011/09/06(火) 15:33:05.72日付計算プログラムを作ってそれを使うとか。
例のブランコの絵が思い浮かぶな…。
-- vbs1.vbs --
Set objfs = CreateObject("Scripting.FileSystemObject")
Set objfolder = objfs.GetFolder("work")
str1 = objfolder.Path & vbCR
datetmp = DateAdd("h", -2, Date & " 16:49:00")
str1 = str1 & datetmp & vbCR
MsgBox(str1)
For Each objfile In objfolder.Files
datetmp1 = DateDiff("s", datetmp, objfile.DateCreated)
If datetmp1 <= 53 Then
str1 = objfile.DateCreated & " " & datetmp1 & " " & objfile.Name & vbCR
res = MsgBox(str1, 1)
If res = 2 Then ' = Cancel ?
Exit For
End If
'objfs.DeleteFile objfile
End If
Next
'MsgBox(str1)
0978デフォルトの名無しさん
2011/09/12(月) 20:08:55.72�@ren A.txt B.txt
�B
�C
�Dren C.txt A.txt
�E
このようにしたいのですが
�Dでどう打てばC.txtをA.txtにリネームできるでしょうか?
ちなみにAの名前には半角スペースや()-色々入る可能性があります。
bat初心者で恐縮ですが、どうかアドバイスのほどよろしくお願いします。
0979デフォルトの名無しさん
2011/09/12(月) 20:11:44.29ren *.txt B.txt
0980デフォルトの名無しさん
2011/09/12(月) 20:47:24.78ren C.txt A.txt
>>979
ren *.txt A.txt
0981デフォルトの名無しさん
2011/09/12(月) 20:52:44.27作成したいファイル名がAではなくて
ドロップしたファイル名を総称してAのつもりで書きました。
Aの名前はドロップしたファイルによって様々です。
これを1ファイル毎にbatで書きなおすのは大変です。
なので質問をさせて頂きました。よろしくお願いします。
0982デフォルトの名無しさん
2011/09/12(月) 20:53:58.19ren %fname% B.txt
ren C.txt %fname%
0983デフォルトの名無しさん
2011/09/12(月) 20:55:59.49�B
�C
�Dren C.txt "%~nx1"
�E
0984デフォルトの名無しさん
2011/09/12(月) 21:00:51.65ありがとうございます!できました!
0985デフォルトの名無しさん
2011/09/12(月) 21:07:23.920986デフォルトの名無しさん
2011/09/12(月) 21:08:10.70これも試した事あったんですが�Dをまた%1だけ書いて失敗してました。
ありがとうございます、勉強になります。
もしよかったらもう1つ伺いたいのですが
このbatと編集したいtxtファイル全てが同一フォルダにあったとして
batを押したら全てのtxtが、�@〜�Eを1ファイルづつ処理するように
組むにはどう書けばよいでしょうか?
0987デフォルトの名無しさん
2011/09/12(月) 21:24:44.640988デフォルトの名無しさん
2011/09/12(月) 21:31:48.53set fname="%%a"
�@〜�E
)
0989デフォルトの名無しさん
2011/09/12(月) 21:35:05.320990デフォルトの名無しさん
2011/09/12(月) 21:55:47.15�Aは書き忘れました。実際には他のプログラム、exeが入ります。
ごめんなさいです。
>>988
ありがとうございます!ちょっとまだ成功はしてないですが
�@〜�Eを1ファイルづつやってくれてるみたいでこの構文でいけそうです!
forについても%%変数名やDOの展開が分からなかったのでまた勉強になりました。
この度は本当にありがとうございました。
0991デフォルトの名無しさん
2011/09/12(月) 21:58:47.00for %%I in (*.txt) do (
�@ren %%I B.txt
�B
�C
�Dren C.txt "%%~nxI"
�E
)
0992デフォルトの名無しさん
2011/09/12(月) 22:00:35.430993デフォルトの名無しさん
2011/09/12(月) 22:55:29.31>>983と>>988
そして>>991
全部やってみたのですが、全てB.txtが存在せず
コマンドの構文が違ってると出てしまいました。
それはつまり�@のA→B.txtから出来ていないという事でしょうか・・・
for %%I in (*.txt) do (
ren %%I B.txt
プログラムのパス(B.txtからC.txtを新たに生成するもの)
del B.txt
ren C.txt "%%~nxI"
)
pause
これなら>>991さんがいう使わんでもいいものを使ってない?
かもしれないので出来ると思ったんですが難しい・・・
何度もしつこくて恐縮なんですが
どうかヒントだけでも教えてもらえないでしょうか?
何度もすいません
0994デフォルトの名無しさん
2011/09/12(月) 23:00:34.36�@ren "%%~I" B.txt
0995デフォルトの名無しさん
2011/09/12(月) 23:12:33.79>>994
はい、あります!ありがとうございます!
けど何で>>993の1行目と2行目は複数処理になって急に出来なかったんだ…
ちょっと削りながら試してみます。
皆様どうもありがとうございました!!
0996995
2011/09/12(月) 23:29:51.47拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。
※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %7 【.bat】
http://hibari.2ch.net/test/read.cgi/tech/1298873550/
【.cmd】 バッチファイルスクリプト %6 【.bat】
http://hibari.2ch.net/test/read.cgi/tech/1277465356/
【.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/
0997デフォルトの名無しさん
2011/09/13(火) 00:56:25.24よろしく
0998デフォルトの名無しさん
2011/09/13(火) 02:08:16.90forのときは、空白があっても""を付けてくれない
仮令for in ("*.txt")とやっても駄目
0999デフォルトの名無しさん
2011/09/13(火) 03:20:03.621000デフォルトの名無しさん
2011/09/13(火) 04:03:56.4110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。