【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/03/11(土) 13:47:11.66ID:2LSSeyH1
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。

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

それ以前の過去スレ
%10 http://peace.2ch.net/test/read.cgi/tech/1374205515/
%9  http://toro.2ch.net/test/read.cgi/tech/1335015478/
%8  http://toro.2ch.net/test/read.cgi/tech/1315844420/
%7  http://hibari.2ch.net/test/read.cgi/tech/1298873550/
%6  http://hibari.2ch.net/test/read.cgi/tech/1277465356/
%5  http://pc12.2ch.net/test/read.cgi/tech/1242268171/
%4  http://pc12.2ch.net/test/read.cgi/tech/1229955189/
%3  http://pc11.2ch.net/test/read.cgi/tech/1217860043/
%2  http://pc12.2ch.net/test/read.cgi/tech/1197881068/
%1  http://pc11.2ch.net/test/read.cgi/tech/1178281991/
2017/06/17(土) 22:08:13.20ID:hP08xqzx
>>106
ありがとうございます!
比較して、代入の引数iに違いがあるし、もう少し勉強します。

また、わからないことなど出てくるかもしれませんが、その時はよろしくお願いいたします。
2017/06/17(土) 22:53:57.13ID:4uF4heHb
参考に言っておくが () の中の引数なんだが、ワイルドカード以外は要注意だ
例えば (*.avi *.mp4 sukebe.jpg) とかにすると
各ディレクトリに sukebe.jpg が無くても強引にコマンド実行してエラーになったりする
2017/06/19(月) 21:06:26.56ID:HM1jnBNt
moroとかsukebeとか名付けがオッサン臭いんだがw
2017/06/26(月) 00:08:20.51ID:a4kJ2YgH
DIRコマンドでは*を使って検索みたいなことが出来ますね。


【コマンド】
C:\>dir /s /b C:\Windows\System32\host*

【実行結果】
C:\Windows\System32\hostname.exe
C:\Windows\System32\dllcache\hostname.exe
C:\Windows\System32\drivers\etc\hosts


他にもっと複雑な検索も出来るのでしょうか?
2017/06/26(月) 00:10:31.02ID:a4kJ2YgH
あと「DIR /?」で出てくるヘルプにはこの機能について触れられていないのはなぜなのでしょう?こんなに便利なのに。
2017/06/26(月) 00:24:40.04ID:1HPve1dM
ワイルドカードはDIR固有じゃないけど
2017/06/26(月) 00:27:25.02ID:q7GF7ZpN
>>111
windowsXPで恐縮なんだが、Windowsヘルプ(ヘルプとサポートセンター)では、
Dirの項目の説明の中で、ワイルドカード関係のものとして以下のものが書いてあったよ

解説
・複数の filenames を使用する
 複数の filenames を使用できます。スペース、カンマ、またはセミコロンでファイル名を区切ります。
 FileName でワイルドカード文字 (? と *) を使うと、ファイルのグループを表示することができます。
・ワイルドカードを使用する
 ワイルドカード (? と *) を使うと、ファイルとサブディレクトリのサブセットの一覧を表示できます。


ドライブ C のすべてのディレクトリで、拡張子が .txt のすべてのファイルの一覧を表示するには、次のように入力します。

dir c:\*.txt /w/o/s/p

各ディレクトリにある拡張子が .txt のファイル名が、アルファベット順にソートされた一覧がワイド形式で表示されます。
画面単位で一時停止し、キーが押されると次の画面が表示されます。
2017/06/26(月) 01:37:25.73ID:q7GF7ZpN
>>111
つまりコマンドの内蔵ヘルプは簡略版ってことなんだ

それと、なんかちょっと検索してみたら
Windows10には「ヘルプとサポート」がないらしい
なのでオンラインでのコマンドラインリファレンス
https://technet.microsoft.com/ja-jp/library/cc755121%28v=ws.10%29.aspx
XPの「ヘルプとサポート」には
「コマンドラインリファレンス」の他にも、
「新しいコマンドラインツール」
「コマンドシェルの概要」(ここにパイプやリダイレクトの説明が載っている)
ってのがあったんだけどなあ
2017/07/01(土) 02:44:43.86ID:mwCfh4Ih
質問があります。
ちょっと事情があってすべての引数をダブルクオーテーションで囲って実行しなければならなくなりました。
例えばこんな感じで

"C:\Software\ffmpeg\ffmpeg.exe" "-i" "%~1" "-vcodec" "utvideo" "-acodec" "pcm_s16le" "%~dpn1_test.avi"

ffmpegでは正常に動くことを確認したのですが他の一般的なソフトウェアもこのような起動方法で動作すると考えてもいいのでしょうか?
2017/07/01(土) 03:37:58.17ID:QCoLM9eW
引数の仕様はそれぞれだが問題無い
2017/07/05(水) 22:31:01.85ID:9GxT9B4i
とあるファイルの中身の文字列を置換したいのですが、何かいい方法はありますでしょうか?
とあるファイルはtxtファイルではないですが、テキストエディタで開くと文字列が書いてあります。
2017/07/05(水) 22:46:04.03ID:R8zuGv9z
全部テキストならともかくそれ以外のバイナリファイル内の置換はcmdじゃ無理だろ
WSHとかPower Shellとかで探せ
2017/07/06(木) 00:29:11.58ID:l/JVwvz3
テキストファイルだけど、拡張子がtxtではないファイルのことです
2017/07/06(木) 01:41:06.31ID:vizsBHcK
findstr である程度のことはできるけど、置換の条件とかが複雑になってくるとしんどい。
外部コマンドが使用可能なら、onigsedとか、SEDを使った方が多少は楽。
2017/07/06(木) 02:34:32.14ID:VUvDmuBp
>>119
拡張子になんの意味があると思ってるの?
なんかそのレベルの知識だったら、メモ帳でも使った方がいいと思うよ。
2017/07/07(金) 17:03:51.39ID:peDYPYbs
>>119
ren Nullpo.unko Nullpo.txt
2017/07/09(日) 19:10:43.21ID:Gxva3cTk
バッチファイルからシリアルポートを簡単に読み書き出来る手段って無いですかね?
古くはCOM?を使う方法が有名ですがBluetoothなどで作られた仮想シリアルポート?には使えないようです
2017/07/13(木) 00:28:41.39ID:m+WJUz/m
シリアルポートってなんだ?RS-232Cとかか?
2017/07/13(木) 00:45:21.62ID:CfPNRtgi
>>123
232C→USB変換ケーブルみたいなのあったような
2017/07/16(日) 11:23:45.75ID:FHjtOHLZ
そもそもバッチファイルって何?
CでもBasicでもなく、メモ帳の拡張子をbatに変えるだけで良くて、
コマンドブロンプトとかいう、MS-DOSと何が違うのかわからないような画面で動いて、
何なの?
2017/07/16(日) 15:58:56.60ID:30vHB81v
CだってBASICだってメモ帳の拡張子を適当に変えれば行けますよ
2017/07/18(火) 02:02:06.89ID:Bi+xDIbE
「拡張子とは何か」から始めとけ
2017/07/18(火) 09:43:40.29ID:YNdL6SIO
>>126
>メモ帳の拡張子をbatに変える

notepad.exeの拡張子をbatに変えたら動かなくなりますよ
2017/07/18(火) 12:15:15.33ID:+17jTjCv
>>129
なんでメモ帳って書いてあるのにnotepad.exeをいじるわけ?
2017/07/18(火) 12:23:23.94ID:lxnTGpj5
そらメモ帳の実体はnotepad.exeやし
2017/07/18(火) 19:54:35.52ID:qQbuN+bc
>>130
お前の言う「メモ帳」とはnotepad.exeでない何か他のものなのか?
2017/07/18(火) 20:32:10.68ID:wtRY8Rgw
もう夏休みか
2017/07/18(火) 23:42:51.89ID:Wjn/rMX6
揚げ足の取り方が寒い。
2017/07/19(水) 00:03:00.46ID:oeGL8Gu+
>>126についていうなら、その辺のいい加減さが理解を妨げてると言える
2017/07/19(水) 00:19:58.81ID:wIP5zHZ/
とにかく>>126は色々とおかしい
どこから突っ込めばいいのかわからんくらいにアチコチおかしい

PC初心者板ならともかく、なぜム板にこんな人が居るんだ?ってレベル
迷い込んできたのか?
2017/07/19(水) 00:23:24.87ID:I6a60LYe
しかし誰もきちんと説明できないという
2017/07/19(水) 02:27:06.77ID:Gwnbk1WK
どこから説明始めたらいいのかわからん程だし
2017/07/19(水) 21:02:00.27ID:WMMf4PqS
説明はできないが揚げ足は取れる、ということですね。
2017/07/19(水) 22:27:12.79ID:caLBuZR5
コピー系コマンドのコピー速度って

遅 copy < xcopy < robocopy 早

で良いですよね?
これはVista、7、10のどのOSでも同じでしょうか?
2017/07/19(水) 23:32:30.26ID:I6a60LYe
copyの方が早くね?4文字だし。
142140
垢版 |
2017/07/20(木) 03:04:39.26ID:R4lBeVK+
>>141
コマンド打ち込むにも時間がかかりますから一理ありますね。copyは引数指定も直感的だし…


って常にコマンド手打ちする訳でもないですし!w
2017/07/22(土) 00:59:36.62ID:J1O+P69V
+.bat や ,.bat もOKだった
2017/07/22(土) 21:18:13.40ID:yBUCBb6t
プラスバッドって、何か格好いいな。
カンマバットはダセェけど。
2017/07/23(日) 16:18:49.88ID:sxzHAQSA
では、
£.bat
γ.bat

ラプラスバットと、ガンマバットでは、どうだろう?
2017/07/29(土) 01:24:32.19ID:ocuZvBLs
@.bat や =.bat
ファイルを作ることはできるが、実行しようとしてもコマンドプロンプトに無視されて実行できなかった
2017/07/29(土) 02:07:03.67ID:0L2d7SO5
@.bat はフルパスで C:\work\@bat ってするか、キャレットでエスケープして ^@.bat で実行できる
=.bat はフルパスでもダメだけど、キャレットでエスケープすればいける
2017/08/01(火) 00:45:45.45ID:7i1X54Qd
>>147
キャレットって何かわからなかったが、^をつけることなんですね
^@ や ^= でたしかに実行できました
2017/08/10(木) 19:56:28.38ID:gQNT5BPl
(^_^)
2017/08/10(木) 21:54:16.62ID:BFQhJ/Te
"@ とか "= とか
2017/08/14(月) 22:38:23.70ID:3xlVGOet
すみません助けてください
遅延関数を宣言してるところから、下記の親ディレクトリの名前だけ引くサブルーチンに
ファイルフルパス投げて、戻そうとしているのですが
for文のところでDEST_DIRに値が入らなくて困っています

windows7環境で遅延関数について調べているのですが
なんで値が入らないのかわからず。 %%Pをechoすると中身が表示されるのですが
それをSETするときに何をやっても入りません。。。助けてください

:GET_PARENTDIR
setlocal enabledelayedexpansion

SET PathLF=%1
SET PathLF=%PathLF:~0,-1%

SET PathLF=!PathLF:\=^

!

for /F %%P in ("!PathLF!") do SET DEST_DIR = %%P
endlocal && set DEST_DIR = %DEST_DIR%
echo %DEST_DIR%

exit /b
2017/08/14(月) 22:39:38.44ID:3xlVGOet
ああああ遅延変数でした
もうやだああぁ
2017/08/14(月) 23:55:08.58ID:pZiLFUe+
>>151
これって例えばc:\aaa\bbb\ccc\test.txtってファイルを投げたら
最終的にtest.txって文字を得たいの?
cccを得たいの?
2017/08/15(火) 02:10:26.85ID:F71LHla5
>>151
まずは

SET DEST_DIR = %%P
endlocal && set DEST_DIR = %DEST_DIR%

の空白がいけないのでは?

SET DEST_DIR=%%P
endlocal && set DEST_DIR=%DEST_DIR%
2017/08/15(火) 08:22:11.69ID:ltV5IdSe
>>154
後輩にその空白を入れられたことがある
「可読性を良くしようと思って…」って言ってたな
普通の高級言語やってる奴は=の前後に空白入れただけで不具合起こるなんて考えもしないわな
コマンドプロンプトはホント昔の仕様を引きずり過ぎだわ
2017/08/15(火) 08:51:21.42ID:J2u+qflL
setlocal enabledelayedexpansion使うとファイル名に!が入ってるとめんどくさいから極力使わないようにしてるんだけど俺だけ?みんなはどうしてる?
2017/08/15(火) 08:55:13.27ID:GzAS59pw
>>155
C言語で言うマクロ置換みたいなもんだからしょうがない
もう新規の奴はPowerShellに移行するしかない
2017/08/15(火) 10:13:39.94ID:x5EZUuTK
名前ソートで上に持ってきたいフォルダには名前の頭に!をつけてる
2017/08/17(木) 23:34:26.73ID:jGLnJoZN
スペースが入ったファイル名からスペースを取り除くには一行では無理ですか?
2017/08/18(金) 00:59:25.98ID:Oq4EZT3J
こんな感じ?
set "File=%~1" & ren "%File%" "remove=%File: =%"
2017/08/18(金) 01:00:23.41ID:Oq4EZT3J
間違えた
set "File=%~1" & ren "%File%" "%File: =%"
2017/08/20(日) 03:39:45.42ID:w/lVOYHU
バッチでよく使う pslist.exe はプロセス名が日本語だと間違える
pslist v1.4 sysonternals
2017/08/20(日) 16:32:29.32ID:7nn0chG1
フォルダD:\XXXX直下の、
AAAA、BBBB、CCCCの3つの隠しファイル(拡張子なし)を、
定期的にE:\backupフォルダにバックアップするためのバッチファイルを作りたい
フォルダXXXX以下には、YYYY、ZZZZというフォルダがあり、
この下にもAAAA、BBBB、CCCCと同名のファイルが存在するが、
それはバックアップしなくていい
copyコマンドでは隠しファイルはコピーできない
xcopyコマンドではサブディレクトリ以下の同名ファイルもコピーされてしまう
バッチファイルで処理するためにはどうすればいいのでしょうか?
できればアトリビュートはいじりたくないです
よろしくお願いいたします
2017/08/20(日) 16:35:22.92ID:T95gEh5X
>>161
誰もツッコミ無しなの?
2017/08/20(日) 16:53:03.09ID:vBwVL8I3
>>163
xcopyでAAAAなどのファイルを一つずつ指定してコピーするというのは?
2017/08/20(日) 17:25:05.34ID:7nn0chG1
>>165
実験してみたんですが、
xcopy D:\XXXX\AAAA E:\backup\
とすると、backupフォルダには、
AAAA
\YYYY\AAAA
\ZZZZ\AAAA
の3ファイルがコピーされちゃうんですよ
\YYYYと\ZZZZのはいらないのでどうしたもんかなと質問させていただきました
2017/08/20(日) 17:36:31.70ID:vBwVL8I3
>>166
こちらの方でもテストしたけど1ファイルだけコピーになるんだけどな
なんでだろ
2017/08/20(日) 17:43:47.57ID:7nn0chG1
>>167
テストありがとうございます
あれ?
なんか余計なスイッチ入れるとかしちゃってたかな?
今出先なんで帰ったら再度実験してみます
2017/08/20(日) 19:15:30.58ID:T95gEh5X
>>161
cd /d "%~dp1" & set "File=%~nx1" & call ren "%%File%%" "%%File: =%%"

>>163
cd /d "D:\XXXX"
for %%i in (AAAA BBBB CCCC) do xcopy /h /y "%%~i" "E:\backup"
2017/08/22(火) 19:19:28.49ID:rIu52qT/
以前こちらで聞いて試行錯誤しているのですが、何分初心者で四苦八苦しております。
そこでご教授願いたいのですが、
@rem 引数有無と引数名チェック
if "%USR_INPUT_STR1%"=="" goto ERROR
echo;%USR_INPUT_STR1%|findstr /R /C:"^http" /C:"openrec" >NUL||(echo "%1" を処理できません) && goto ERROR

@rem URLのアドレスとHTMLを環境変数へ設定
set ADDR=%USR_INPUT_STR1%
for %%I in (%USR_INPUT_STR1%) do set HTML=%%~nxI

@rem HTMLダウンロード
curl -L --max-redirs 10 -R -O %ADDR%
if not %ERRORLEVEL%==0 goto ERROR

@rem HTMLから文字列抽出
for /F "tokens=2 delims=<>| " %%I in ('type %HTML%^|findstr /R /C:"<title>"') do set TITLE=%%~I
for /F "tokens=3 delims=, " %%I in ('type %HTML%^|find /I "m3u8"') do set TARGET=%%~I

ffmpeg -c copy "%TITLE%" -i "%TARGET%"
pause
exit

:ERROR
echo 引数が無効のため処理できませんでした
pause
exit

このままだと、ファイル名がUTF-8で文字化けしてしまいます。
これを、面倒なのでファイル名で出力したいと思ったのですが、正規表現が弱く全く前に進みません。

丸投げで申し訳ございませんが、どうか手直ししていただけませんでしょうか。
よろしくお願い致します。
2017/08/22(火) 20:10:25.50ID:uGuLhv+Q
powershellに切り替えたら?
2017/08/22(火) 20:50:12.77ID:1dHyDD35
>>170
よく分からないけどbat自体をUTF-8で書いてchcp 65001というのは?
2017/08/22(火) 20:52:58.84ID:rIu52qT/
>>172
それも考えたのですが、不特定多数のPCで使う機会があるので手間が増えてしまうなと思い諦めました。
そこで、URLからIDとなる文字列を抽出してそれをファイル名に使おうと考えました。
参考URL:https://www.openrec.tv/live/7cuVKOAY3lv
この末尾の7cuVKOAY3lvの部分だけを、TITLEに代入したいと思ったのですが、思うようにいかなくて・・・。
2017/08/22(火) 21:10:23.56ID:rIu52qT/
結局、実行batのディレクトリ内にnkf32を導入し、
nkf -s --overwrite %HTML%
と書き加えて対処致しました
2017/08/29(火) 14:35:48.67ID:91TLAHUR
フォルダの中に、あああ_1.flv あああ_2.flv … あああ_100.flvのようなファイルがあるときに、あああ_1.flvをあああ_001.flvのようにリネームしたりできないんでしょうか
2017/08/29(火) 15:34:02.29ID:ZSKrJS0x
>>175
Flexible Renamer
2017/08/29(火) 16:50:10.59ID:iDduY4Qi
お〜瑠璃ね〜むで十分やぞ
D&D用のショトカも作れるしな
2017/08/29(火) 17:11:24.47ID:1aRkt9bd
>>175
「のようなファイルがあるときに」の条件がどこまでかわからないが
>>176が一番早いのは間違いない
2017/08/29(火) 20:06:42.61ID:KnTCuJQc
set "a=あああ_"
set "b=.flv"
setlocal enabledelayedexpansion
for /L %%i in (1,1,99) do set /a c=%%i+1000 & ren "!a!%%i!b!" "!a!!c:~1!!b!"
2017/08/31(木) 16:38:58.30ID:omILiWW+
>>175
pushd "%~dp1"
:LOOP
for /f "tokens=1,2 delims=_" %%a in ("%~n1") do (
set FNAME=%%a
set /a FN=%%b+1000
)
ren "%~1" "%FNAME%_%FN:~-3%%~x1"
shift
if not "%~1"=="" goto :LOOP
2017/08/31(木) 17:02:31.64ID:KsdTyPQv
>>180
変換の数字の前が_文字じゃないかもしれないし
_文字がファイル名の中に混じっている可能性もあるし
2017/08/31(木) 17:53:19.91ID:Vr+Gp9oD
どのスレでも一緒だが質問の要件が分かりにくいのはめんどうだな
2017/08/31(木) 18:00:47.56ID:kMuf1wHV
なんでか知らないけど他人に勝手にマルチポストされたけど>>175の質問は元のスレで解決したのでもういいです
2017/09/03(日) 22:03:48.56ID:BJjXydYg
cd \
pushd D:\abc
setlocal
popd

としても元の \ に戻らなかった
2017/09/04(月) 00:02:37.80ID:pBY/MKIa
>>184
そうならなきゃ逆にダメでしょ
setlocalでは(親の環境を引き継いだ)別の環境の上で実行されている
カレントを移動しようが環境変数を操作しようが元の環境には影響しない
pushd D:\abc
setlocal
endlocal
popd
または
setlocal
pushd D:\abc
endlocal
2017/09/04(月) 01:15:44.81ID:24unggVp
>>185
ありがとうございました
そういうことでしたか
2017/09/16(土) 05:02:43.18ID:cRJ1WDqm
今さらバッチファイル入門て…
余計な被害者増やさずPowerShellにしろよ
これだからIT後進国は

超入門コマンドプロンプト:バッチコマンドで定型処理を行う (1/3) - @IT
http://www.atmarkit.co.jp/ait/articles/1709/15/news034.html
017年09月15日 05時00分 公開
2017/09/16(土) 05:59:12.53ID:TbhIjs8j
>>187
このスレのタイトル見てから言えよ
それとも、お前は、自分が使ってないソフトのスレ行って
「別のソフト使え」って言って巡るのが趣味なのか?
2017/09/16(土) 06:09:12.67ID:NzFbxZfY
PowerShellに移行しようと思ったこともあるけどファイルをD&D出来ないから断念した
あと他人の環境で動くのか分からないから渡しにくいし
2017/09/16(土) 06:11:20.82ID:NzFbxZfY
まあbatに面倒臭いとこがあるのも理解できるけど
せめて正規表現と小数の計算くらいはあればよかったんだが
2017/09/16(土) 11:00:27.02ID:Nvo3nRRv
自分で使うにはPoweShellはめちゃめちゃ便利だけど
一般的に定着してるかというとそうじゃないし
192デフォルトの名無しさん
垢版 |
2017/09/17(日) 11:17:50.05ID:jtG62g+O
PowerShell は起動が遅いから小さいバッチをループで呼び出すのには向いてないんじゃないかな。
いったんロードしたオブジェクトを関数形式で呼び出せばいいんだろうけどよくわからなくてめんどくさいし。
193デフォルトの名無しさん
垢版 |
2017/09/17(日) 11:23:06.30ID:jtG62g+O
最近、フリーソフトとかの小さいやつの管理がめんどくさくなって
メニュー代わりにバッチファイルを使うことにしたんですよ。
全部をVHDに入れてマウントなんで、持ち運びは仮想ディスクファイル1個をコピーするだけ。
起動が素早いのがメリット。
アイコンが出ないのがデメリット。
アイコン出そうと思ったら全環境で共通のドライブ名に固定してショートカットを使ったらいいと思うけど。

プログラムの入ったフォルダ
Program Files 3

バッチファイルの入ったフォルダ
Program Link

[FirefoxPortable.bat]
set pathname1=%~d0\Program Files 3\FireFoxPortable52.0.2\FirefoxPortable\FirefoxPortable.exe
start "" "%pathname1%"
2017/09/17(日) 12:31:00.83ID:z++LvPT9
それだけならバッチ作るまでもなくハードリンクにすればアイコン問題も解決では
2017/09/17(日) 12:37:46.24ID:z++LvPT9
あ、すまんそれだと実行ファイルと同じフォルダのDLL読めないからダメか
2017/09/18(月) 00:06:56.51ID:AVBMNnfo
短いファイル名に関していくつか質問

1 短いファイル名はダブルクオーテーションで囲まなくても実行可能?
2 短いファイル名は取得して一ヶ月経っても変動せずにそのパスを実行出来る?
2017/09/18(月) 23:50:36.04ID:2dThcY7y
>>196
「1」は、多分可能
「2」は、他にファイルが出来なければが前提かと

「dir c:\*1」と「dir c:\*1 /x」を実行して挙動を確かめて下さい。
2017/09/19(火) 00:09:36.87ID:I5t298fo
少なくともNTFSではファイルの情報としてショートファイルネームも格納されるから
ファイルが存在したままある日突然名前が変わることはないはず

そのファイルを削除して似たようなロングファイルネームの別のファイルを作った時
同名だけど別のファイルが出来てしまう事はありえる
199196
垢版 |
2017/09/19(火) 01:33:17.50ID:FIGNw+kF
レスありがとうございます。
ちなみに自分がやりたかったのは↓と同じケースで自作のbatをタスクスケジューラに登録したいというものでした。

schtasksで半角スペースを含むパスを実行させたい (DOSプロンプト活用相談室LOG)
http://fpcu.on.coocan.jp/dosvcmd/bbs/log/taskkillstart/at/4-0842.html

"を\"と書いてエスケープさせるやり方もあるようですがそちらではbatにダブルクォーテーションで囲った引数を渡すと不可解な動作をすることがあり上手くいきせんでした。

batのパスにスペースを含んだ場合 起動しない
batのパスにスペースを含まない場合 %~dp0を実行したときにbatのフォルダパスの頭にカレントディレクトリの文字列も追加される
2017/09/19(火) 02:17:59.79ID:Lhe/hdFe
mklinkやsubstを使って違う名前でアクセスするのはどうなのでしょう
うまくいくかどうかわかりませんが

ファイル名フォルダ名に空白や%^!みたいな記号があると困ることが多いですね
2017/09/20(水) 03:12:37.88ID:aIPv0JYK
>>199
この書き方に準じていないだけでは?

A Scheduled Task Does Not Run When You Use Schtasks.exe to Create It and When the Path of the Scheduled Task Contains a Space
https://support.microsoft.com/en-us/help/823093/a-scheduled-task-does-not-run-when-you-use-schtasks-exe-to-create-it-a

Schtasks.exe を使用して、スケジュールされたタスクのパスにスペースが含まれている場合を作成するときにスケジュールされたタスクが実行されません。
https://support.microsoft.com/ja-jp/help/823093/a-scheduled-task-does-not-run-when-you-use-schtasks-exe-to-create-it-a

失敗例
schtasks /create /tn "my task" /tr "c:\foldername containing spaces\script.bat arguments" /sc once /sd 07/29/2003 /st 10:01

成功例
schtasks /create /tn "my task" /tr "\"c:\foldername name containing spaces\script.bat\" arguments" /sc once /sd 07/29/2003 /st 10:01
202196
垢版 |
2017/09/20(水) 06:44:59.65ID:w13Y3qRA
>>201
自分の説明が下手で伝わらなかったんだと思いますが、成功例の方の記述でパスにスペースを含むbatは起動できるのですがそのbatにダブルクオーテーションを含む引数を渡すと動作がおかしくなるのです。
引数にダブルクオーテーションを含まない場合は正常に起動できます。
203196
垢版 |
2017/09/20(水) 07:01:29.72ID:w13Y3qRA
一応追記しておくと、おかしくなるのはタスクスケジューラから起動した場合限定で通常の起動では問題ありません。
呼び出すbat内の記述にミスがあるとかそういうのではないと思います。
2017/09/21(木) 11:18:59.39ID:WXZB4PjF
%CMDCMDLINE%はどうなってる?
2017/09/21(木) 18:15:09.28ID:X0F1M9Qy
argumentにダブルクォーテションがある場合もパスと同様に\"してる?
2017/09/21(木) 18:35:03.44ID:uKBRYTKY
test
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況