[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
318: 2018/01/03(水)21:17 ID:NAv6VFfd(2/2) AAS
>>317
wsfの手があったか、あとjsでもスクリプトエンコードで書けばなんとかなるね
319(1): 2018/01/13(土)16:23 ID:t3TbTPGI(1) AAS
powershellで似たような事はできませんか?
1ファイルにしたくて
320: 2018/01/13(土)16:32 ID:9pJBMU57(1) AAS
>>319
【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net
2chスレ:tech
321: 2018/01/18(木)18:41 ID:lAsosfYH(1/4) AAS
どうしても分からないので質問致します。
@echo off
@rem バッチファイルのディレクトリに移動
cd /d %~d0%~p0
set USR_INPUT_STR1=外部リンク:www.openrec.tv
@rem 引数有無と引数名チェック
if "%USR_INPUT_STR1%"=="" goto ERROR
echo;%USR_INPUT_STR1%|findstr /R /C:"^http" /C:"openrec" >NUL||(echo "%1" を処理できません) && goto ERROR
省8
322(3): 2018/01/18(木)18:41 ID:lAsosfYH(2/4) AAS
set TARGET=%TARGET:playlist=chunklist%
@rem ffmpegで動画吸い出し
ffmpeg -c copy "%TITLE%.ts" -i "%TARGET%"
@rem 最後にcurlで出力したソースファイルを削除
@rem for /R %%f in (*.) do del /Q "%%f"
pause
exit
:ERROR
echo 引数が無効のため処理できませんでした
pause
省6
323: 2018/01/18(木)19:11 ID:r+5+UL4/(1) AAS
>>322
とりあえず最初の行を
rem @echo off
にしてどこでエラーになってのか確認しろよ
324: 2018/01/18(木)19:15 ID:pm/tv2ru(1/2) AAS
>>322
これ途中の処理抜けてない?
TARGETにURLが入らないんだけど
325(1): 2018/01/18(木)19:34 ID:pm/tv2ru(2/2) AAS
170のやつを適当に書き直したら動いたよ
for /F tokens^=2^ delims^=^" %%I in ('type %HTML%^|find /I "data-sourcefile"') do set "TARGET=%%~I"
326: 2018/01/18(木)19:58 ID:lAsosfYH(3/4) AAS
>>322の最初が抜けてました・・・
@rem HTMLから文字列抽出
for /F "tokens=2 delims=<>| " %%I in ('type %HTML%^|findstr /R /C:"<title>"') do set TITLE=%%~I
for /F "tokens=* delims=data-file= " %%I in ('type %HTML%^|find /I "playlist.m3u8"') do set TARGET=%%~I
327: 2018/01/18(木)20:06 ID:lAsosfYH(4/4) AAS
>>325
ありがとうございます・・・
エラーを見たのですが、なぜかsourcefile=が付いてしまっていました
何度もありがとうございます
328: 2018/01/29(月)01:16 ID:s5lQXlw3(1) AAS
echo abc 1>x1 1>x11 2>x2 3>x3
とするとDOS窓が応答しなくなった
x11 x2 x3 ファイルができるが x1ファイルはできない
329(3): 2018/01/29(月)14:21 ID:e8Iu9+Yp(1) AAS
AA省
330(1): 2018/01/29(月)15:15 ID:LZ9wDs2K(1/2) AAS
>>329
>>12-19の方法で相対パスを取得すれば出来ると思うよ
331: 2018/01/29(月)16:22 ID:LZ9wDs2K(2/2) AAS
自分用に書いたbatを流用してみた
多分こんな感じで動くはず
外部リンク:pastebin.com
332(2): 2018/01/30(火)00:28 ID:fZrZLUfh(1) AAS
>>329
set "a=D:\comp" & set "b=D:\compopen"
setlocal enabledelayedexpansion
for /L %%i in (4,1,1000) do if "!a:~%%i,1!"=="" set "c=%%i" & goto x
:x
endlocal & set "c=%c%"
for /r "%a%" %%i in (*.zip *.rar) do set "d=%%~dpni" & set "e=%%~i" & call :y
goto :eof
:y
setlocal enabledelayedexpansion
省1
333: 330 2018/01/30(火)04:04 ID:I+jPXl6+(1) AAS
>>332
なるほど
自分のは冗長に書きすぎてたね
334(1): 2018/01/30(火)16:28 ID:/nodnUUg(1) AAS
>>329
使い回しあんまり考えなければ
-------- ここから
set path=C:\Program Files\7-Zip;%path%
cd /d D:\comp
for /f "usebackq delims=" %%i in (`dir /ad /s /b`) do (
echo,"%%~i"
set "tmppath0=%%~i"
call set "tmppath1=D:\compopen%%tmppath0:~7%%"
pushd "%%~i"
省5
335: 2018/01/30(火)17:10 ID:25OUwAYA(1) AAS
AA省
336: 2018/01/31(水)00:35 ID:ah9e2u9N(1) AAS
そもそも、そんな複雑な手続きには、PowerShell, Ruby などを使えw
337: 2018/02/03(土)09:54 ID:y+J4EMEq(1) AAS
コマンドプロンプトの仕様についてだけど、遅延展開ってデフォでONじゃダメだったのかな?
あれ打ち込むのマンドクサ('A`)
338(4): 2018/02/05(月)04:53 ID:j3KUW6ez(1/5) AAS
1.test.exeという実行ファイルがある。
2.test.exeのフルパスは必要に応じて「test.exeをShift+右クリック」→「パスをコピー」して変数testExeに格納してもらう。
このフルパスには"D:\a bc\test.exe"のように空白が含まれることがあるとする。
3.FOR文でこのtest.exeを--helpオプションつきで実行し、結果からfindstr&setしたい。
---作成バッチ---
@echo off
cd /d %~dp0
set testExe="D:\a bc\test.exe"
FOR /F "tokens=3" %%a IN ('%testExe% --help ^| findstr "TargetStr"') DO (
set kekka=%%a
省12
339(1): 2018/02/05(月)05:04 ID:j3KUW6ez(2/5) AAS
>>338 追記
パスに空白を含む場合も問題ですが、
set testExe="D:\abc\test.exe"
のように空白を含まない場合には
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
と言われてエラーになるので、それも含めてなんとかしたいという点を書き忘れていました。
「FOR文でフルパスでコマンドを実行したい場合、どうすればよいのでしょう」というのが根本的な質問です。
340: 2018/02/05(月)05:55 ID:j3KUW6ez(3/5) AAS
すみません。>>338-339ですが、直接フルパスで実行するのではなくフォルダに移動して実行することで一応解決しました。
---
@echo off
cd /d %~dp0
set testExe="D:\a bc\test.exe"
FOR /F "tokens=1 delims=" %%I IN (%testExe%) DO (
IF "%%~nxI"=="test.exe" (
pushd "%%~dpI"
FOR /F "tokens=3" %%M IN ('.\%%~nxI --help ^| findstr "TargetStr"') DO (
set kekka=%%M
省8
341(2): 2018/02/05(月)08:19 ID:ETXmgzVd(1/4) AAS
>>338
@echo off
cd /d %~dp0
set testExe="D:\a bc\test.exe"
for /f "tokens=3" %%a in ('start /wait /b "" %testExe% --help ^| findstr "TargetStr"') DO (
set kekka=%%a
)
@echo %kekka%
pause
342(1): 2018/02/05(月)08:24 ID:chwOG0ZE(1) AAS
>>338
自分もこの問題に直面して同じ解決策とったんだけどこれって何が原因でこうなるの?
343(2): 2018/02/05(月)10:47 ID:ETXmgzVd(2/4) AAS
こっちのがいいかも
前に似たようなネタがあったような
set testExe="D:\a bc\test.exe"
for /f "tokens=3" %%a in ('cmd /s /c "%testExe% --help | findstr "TargetStr""') do (
344: 2018/02/05(月)11:16 ID:j3KUW6ez(4/5) AAS
>>341
できました!なるほど、startを使えばよかったのですね・・・。ありがとうございます。
>>342
なんなんでしょうね。仕組みがよくわからないです・・・。どなたか解説を・・・。
345(1): 2018/02/05(月)11:23 ID:ETXmgzVd(3/4) AAS
やっぱり >>343 の cmd はダメだな
testExe や TargetStr の中のスペースがデリミタ扱いされる
スペースが2個以上続くと誤動作する
>>341 の start がいい
346: 2018/02/05(月)11:37 ID:j3KUW6ez(5/5) AAS
>>343 >>345
重ねてありがとうございます。
cmdの場合は以下でうまくいくようです。
set testExe="D:\a bc\test.exe"
FOR /F "tokens=3" %%a IN ('cmd /c %testExe% --help ^| findstr "TargetStr"') DO (
347(2): 2018/02/05(月)13:08 ID:Emu9UBTE(1) AAS
括弧の中の最初と最後の引用符が削除される?
上下前次1-新書関写板覧索設栞歴
あと 655 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.022s