【.cmd】 バッチファイルスクリプト %11 【.bat】 at TECH
[2ch|▼Menu]
[前50を表示]
600:デフォルトの名無しさん
16/07/03 21:43:03.57 vq6Z+j1h.net
「削除した」なら許せるが、削除したい(削除できなかった)ならただの糞文

601:デフォルトの名無しさん
16/07/03 22:02:09.39 T1/0jYLy.net
読んでねーけど、したいけど出来ないって愚痴なんじゃねーの?
何に使うか分からんようなゴミを鯖に残してて勝手に消したら老害が何で消した?いつか使うかもしれんのに!って怒るとか
いつかって何だよって言う。たかがbatでアホかって老害SEあるあるネタ

602:デフォルトの名無しさん
16/07/03 22:37:12.83 CJuDkW1k.net
んー、そもそもバッチを使う(作る)人に対する人格否定、という感じのブログ
アナウンス出して全て消しゃいいじゃん、というのが率直な感想
でもやりたいのは、バッチを使う(作る)人の排除みたいだから、
社長になって独裁人事するのが一番の解決なんだろうね

603:デフォルトの名無しさん
16/07/06 01:43:37.05 j2aYQoha.net
整理整頓が出来ていればいい話
バッチに限った事じゃない
不要の見極めも難しいから
消せずに残ってゴミ屋敷が現実

604:デフォルトの名無しさん
16/07/07 00:24:13.51 WGF782sG.net
会社のサーバだとうちもバッチに限らずなんだかよく分からんのがいっぱいあったな
いらなさそうなのまとめて圧縮して1年後の日付書いてこの日まで使わなければ消すってしといた

605:デフォルトの名無しさん
16/07/07 14:56:47.42 TsrNo+6t.net
そうやってなんか対処してるなら話はわかるんだけど
うぜぇうぜぇ


606:チて言うだけで自分では対処しないで放置ってのはもう…



607:デフォルトの名無しさん
16/08/09 17:07:41.16 j5HqbEBX.net
Windows 10のLinuxサブシステムを狙った攻撃が今後登場する可能性
URLリンク(srad.jp)
免疫力がつくまでしばらく待った方がいいのか知らん

608:デフォルトの名無しさん
16/08/14 22:50:59.47 r/0nUjHR.net
そもそもβなんだし、素人さんが手を出していい物じゃないんだけどな。

609:デフォルトの名無しさん
16/08/15 00:25:59.77 8W38K+Qq.net
まだcygwinのほうが安全ということなのかね

610:デフォルトの名無しさん
16/08/21 07:59:09.76 zhyP4GkP.net
今んとこサーバ用途は全く想定してないからさして問題にはならないだろう
最終的にはMacのポジションを目指すのだろうからそれまでに直しておけば良い
テクノロジーカンファレンスがSurfaceで埋まる日は来るか
URLリンク(www.buildinsider.net)

611:デフォルトの名無しさん
16/09/06 18:28:00.80 G35PExva.net
Windows標準のコマンドプロンプトウィンドウをタブ化できる「ConEmu」
URLリンク(osdn.jp)
多数のDOS画面でお仕事する人向け

612:デフォルトの名無しさん
16/09/06 18:51:20.42 rT4OuLmz.net
ConEmuも所詮バックグランドでcmd動かしてて、
cmd単独よりは少し便利になるものの、
元々の日本語の表示の不具合(端が切れる)を引き継いでるからなぁ。
cmd完全互換のまともなシェルはないものかねぇ。

613:デフォルトの名無しさん
16/09/07 18:29:47.35 b6UGEvRF.net
タブでまともに機能するのはすごいたぶちさんだけ

614:デフォルトの名無しさん
16/09/07 19:12:06.44 eCxhE93W.net
.BATと.CMDでは何が違うのでしょうか?
使える命令などに違いがあるのでしょうか?
教えてください。

615:デフォルトの名無しさん
16/09/08 00:57:15.94 54d0WlHM.net
>>589
違いは無いよ
DOSの時代からWin16の時代は拡張子はBATであり、
Win32の時代からMSはCMDに変えたがったみたいだが以前としてBATが主流となってるだけ

616:デフォルトの名無しさん
16/09/08 01:30:50.71 MGX2ZdyU.net
cmd は WindowsNT, OS/2 由来じゃなかったっけ?
例えば OS/2 だと bat にすると DOS互換ボックスでのバッチファイル動作で
cmd にすると OS/2 ネイティブ動作

617:デフォルトの名無しさん
16/09/08 02:06:01.27 54d0WlHM.net
>>591
そうだったっけ?
OS/2は殆ど使ったことない(さわりだけ)んで、拡張子batが動作したかどうか忘れちゃったんだけど
(暗黙の了解でcmdでしか使ってなかった)

618:デフォルトの名無しさん
16/09/08 02:15:48.19 54d0WlHM.net
ちなみに俺が使ってたOS/2はver.1.2のごく初期の奴だったんで
そもそもDOS互換とか存在してなかった気もする

619:デフォルトの名無しさん
16/09/08 03:45:32.33 Jzexm0YP.net
>>589
基本的には同じと思っていいけど厳密には少しだけ動作に違いがある
URLリンク(stackoverflow.com)

620:デフォルトの名無しさん
16/09/08 04:05:36.46 PAzqK7FZ.net
.bat 普通のバッチファイル用途。
.cmd ruby -x でrubyのコード埋め込む為に使用する。シンタックスハイライトをruby向けに設定。
という超ローカルな使い分けをしている

621:デフォルトの名無しさん
16/09/08 21:40:41.34 5x3R57hb.net
setlocal enabledelayedexpansion
set STR="aaa"
if STR=="aaa"(
STR = "bbb"
echo !STR!
)
echo !STR!
echo %STR%
遅延環境変数が分からない


622:のですが、自分の環境だと全て"aaa"になります。 どこが間違っているんでしょうか?



623:590
16/09/08 21:53:39.72 5x3R57hb.net
すいません。適当に書いてしまったのを訂正します
・"bar"が出て上手く行かないケース
@echo off
setlocal enabledelayedexpansion
set foo2="bar"
if %foo2% == "bar" (
set foo2 = "hoge"
echo !foo2!
)
pause
・"hoge"が出て上手く行くケース
@echo off
setlocal enabledelayedexpansion
set foo="bar"
if %foo% == "bar" (
set foo="hoge"
echo !foo!
)
pause
この2つの違いが分かりません。

624:デフォルトの名無しさん
16/09/08 21:58:24.35 5x3R57hb.net
自己解決しました
foo2と=の間に空白があるのが原因でした。
バッチは文字列を代入する際には空白があってはいけないのですね。
set foo2= "hoge"
としたら上手く行きました。
set /a foo2 = 10
では空白があっても行けたのですが、文字列の場合はダメなんですね。

625:デフォルトの名無しさん
16/09/09 03:51:09.43 LpeB3e0i.net
Linuxのシェルスクリプトでも、変数代入時、= の前後に、半角空白を入れられない
a=b
a = b これはダメ
こういう点が、プログラミング言語としてはクソなんだよ。
PowerShell_ise を使いな

626:デフォルトの名無しさん
16/09/09 06:34:14.46 Sx9RRTJO.net
>この2つの違いが分かりません。
そんな違いわかりたくもない
バッチファイルでif文をトラブルなく使う - Qiita
URLリンク(qiita.com)
バッチファイルでif文を使っていてハマったので、ハマらないための書き方と注意点をまとめてみた
解決方法
何も考えず必ず以下の形で書く。
if 条件 ( ←(1)
call :サブルーチン名 引数 ←(2)
) else if 条件 ( ←(3)
call :サブルーチン名 引数
) else ( ←(4)
call :サブルーチン名 引数
) ←(5)

627:デフォルトの名無しさん
16/09/10 14:10:07.42 WyiyFmBQ.net
>>597
ダブルクォート記号を意図して含めたいならそういう記述もありだろうね
だけど、純粋に文字列だけ比較したいだけなら変数名も含めてくくって、あとは判定部分で整形する方が自由度がある
set

628:デフォルトの名無しさん
16/09/10 14:14:02.54 WyiyFmBQ.net
途中で切れた?全角でリトライ
SET "foo= b a r "
IF "%foo%"==" b a r " (
IF "%foo%" == " b a r " (
のようにすれば前後の空白も含めて評価されるし、この場合どちらも同じ結果が得られる
なので、>>598の「バッチは文字列を代入する際には空白があってはいけないのですね。」は誤り
変数の文字列前後、if文のイコール記号の前後の空白の有無で意図しない比較結果になり得る記述は避けたほうがいいのは自明
環境変数の遅延展開に関しては、カッコで囲んだ複文の挙動を把握した上で適切に使う
環境変数はあとから再利用する性質上、意図しない文字や空文字になってしまうのが一番怖い
別解としては、call set "foo=hoge" があり、echo;%%foo%% などのようにパーセント記号を重ねても同じ結果が得られる
こちらは setlocal enabledelayedexpansion は不要、この方法は公式とは言えないのでユーザーのお好み次第といったところ

629:デフォルトの名無しさん
16/09/11 01:07:52.20 4x/hjQLW.net
sqlite3のコマンドラインツールでDB読込み時間を測って遊んでたら
sqlite3 hoge.db "SELECT * FROM TEST" > nul よりも
sqlite3 hoge.db "SELECT * FROM TEST" > "c:\Temp\hoge.txt" のほうが
出力完了までの時間が短かったんですが、出力をnulに捨てるのって
普通にファイルに吐くより遅くなるもんなんでしょうか。

630:デフォルトの名無しさん
16/09/11 01:24:31.36 zfXOe+JX.net
>>603
常にそうなるの?
たまたまじゃなくて?
db読み込みの時間とかが関係してきそうな気がするし
それに


631:write時間は以外に掛からないんでファイルがでかくなければnulとの差はつかない (read時間は掛かるし実行時間にかなりばらつきが出る、また2回目以降はキャッシュからになる)



632:デフォルトの名無しさん
16/09/11 02:05:36.54 zfXOe+JX.net
>>603
ちょっと試してみた
確かにnulの方が時間が掛かる
そこで、sqlite3の代わりに、type xxx.txt >yyy.txtで試してみた
やっぱりファイルに書き出すよりnulの方がはっきり時間がかかる
何故なのかは分からん、スマン

633:デフォルトの名無しさん
16/09/13 21:52:06.22 NwZGDC4j.net
コマンドプロンプトから実行して
処理しますか?(Y/N)⇒処理⇒処理完了後F3キー押すとして終了
するツールを毎日ポチらないといけないのですが
txtにYとF3を書いてリダイレクトで自動入力すれば楽にポチれる気がするんですが
F3をtxtファイルにどう書けばいいのかわかりません、助けてください

634:デフォルトの名無しさん
16/09/14 06:17:54.15 xpMA1gBQ.net
F3は無理だと思うけど・・・

635:デフォルトの名無しさん
16/09/14 08:44:57.03 f2EPB9Ji.net
>>606
uwscでやれば?

636:デフォルトの名無しさん
16/09/14 17:27:36.03 Jy6DKzEX.net
>>608
ありがとうございます
EXECでバッチファイル起動してYとF3入力してexit⇒ENTERで終了するようマクロ組みました
タイマー起動ソフトでUWSを指定時間に実行するようにしたので何もしなくてよくなりました
ありがとうございます

637:デフォルトの名無しさん
16/09/19 03:08:13.70 3gpWvjZ8.net
cmdですが
schtasksでstartコマンドがうまく使えません
/tr "start フルパス実行ファイル名"
※パスにはスペース無しです

638:デフォルトの名無しさん
16/09/19 03:34:12.50 rks5/FmO.net
>>610
cmd内部コマンドを起動するように登録するなら
"cmd /c start xxx"
だけど、単に
/tr xxx
じゃああかんの?(xxxはフルパスの実行ファイルなんでしょ?)

639:デフォルトの名無しさん
16/09/19 04:07:56.77 3gpWvjZ8.net
>>611
速いレスポンスありがとうございます
おっしゃる通りどちらもいけました!
もともとスペースありのパスで悩んで
/tr "フルパススペース混じり" …1
/tr "\"フルパススペース混じり\"" …2
上記1.2から始まり詰まってましたが
お陰様でstartの使い方がわかりました

640:デフォルトの名無しさん
16/09/19 12:05:07.29 mqRkSqP8.net
startは引数にスペースが混じるとおかしくなる
その場合は第一引数に空文字列入れると良い
start "" "c:\program files〜"

641:デフォルトの名無しさん
16/09/22 20:07:59.66 yIBGfr99.net
taskkill /im explorer.exe
start explorer
をバッチにしてエクスプローラ再起動に使ってたんだけど
最近explorer.exeが見つかりませんってなってkillできないんだけど何でだろう
タスクマネージャからなら止められるしPID指定でも止められるんだけど

642:デフォルトの名無しさん
16/09/27 11:38:03.47 clgfgzqk.net
10か

643:デフォルトの名無しさん
16/09/28 19:18:04.93 zhCs69qF.net
下記バッチファイルで call を実行する
@echo off
set a1=%%a2%%
set a2=%%a3%%
set a3=%%a4%%
set a4=%%a5%%
call echo %a1%
call echo %a1% | more
pause
結果は
%a3%
%a4%
なぜか表示が違う
パイプを使うと変数の展開が一回増えるようだ

644:デフォルトの名無しさん
16/09/29 00:33:45.25 RC/Dq8j5.net
パイプは、子タスクでインスタンスは別だと思うよ
set a=1
echo %a%|(more|set a=2)
echo %a%

645:デフォルトの名無しさん
16/09/29 00:34:51.35 RC/Dq8j5.net
echo %a%|(more&set a=2)

646:デフォルトの名無しさん
16/09/29 02:15:55.37 HmIZKCJu.net
echo %a1%
echo %a1% | more
%a2%
%a3%

647:デフォルトの名無しさん
16/09/29 02:29:13.86 HmIZKCJu.net
call call echo %a1%
call call echo %a1% | more
%a4%
%a5%

648:デフォルトの名無しさん
16/10/07 02:33:21.18 E4yfr


649:V8y.net



650:デフォルトの名無しさん
16/10/07 02:39:36.76 E4yfrV8y.net
>>621
追記ですが
"/"の数は変動します

651:デフォルトの名無しさん
16/10/07 03:13:06.25 PWoZvLSt.net
bat素人が適当に書いたらこうなった
set token_number=1
:start
for /f "tokens=%token_number%,* delims=/" %%a in ("/aaa/bbb/ccc") do if "%%b"=="" (
set hoge=/%%a
) else (
set /a token_number=token_number+1
goto start
)
echo %hoge%
pause

652:デフォルトの名無しさん
16/10/07 03:33:35.13 RDmrItg+.net
ちょっと邪道だけど
powershell -Command

653:デフォルトの名無しさん
16/10/07 03:34:29.48 RDmrItg+.net
切れたので再送
powershell -Command Split-Path -Path /aaa/bbb/ccc -Leaf

654:デフォルトの名無しさん
16/10/07 03:44:17.59 273HGXTN.net
>>621
tmp に & や % 等々が入っていない、ダメな文字が無いという楽観的な状態なら
set tmp=/aaa/bbb/ccc/ddd eee
call %tmp:/=&set tailpart=%
echo %tailpart%

655:デフォルトの名無しさん
16/10/07 10:20:31.14 uWLqn+Rg.net
echo [ERROR][%~n0][%date% %time%] エラー出た(ERRORLEVEL=%ERRORLEVEL%)
これ標準エラー出力で出力するのってどうやるんですか?

656:デフォルトの名無しさん
16/10/07 10:47:05.46 yoIkF7ck.net
>>627
標準出力先を標準エラー出力先と同じになるようにリダイレクトしてやるとかかな
(意図がわからんからこれで解決するのかどうかは知らんけど)
echo xxx 1>&2

2>errout.txt 1>&2 echo エラー(err no=111)

657:デフォルトの名無しさん
16/10/07 11:05:50.41 yoIkF7ck.net
出力先が同じだから、2>errout.txt は >errout.txt に書き替えても同じ結果になることからも分かるように
やってることはあくまで出力先を同じにしてるだけなので、標準エラー出力のみを取り扱ってるわけではないことに留意
(なお 1> の 1 は省略可能なので、 1>&2 は >&2 と書くことも可能)

658:デフォルトの名無しさん
16/10/07 11:23:31.75 uWLqn+Rg.net
echo aaa
echo bbb 1>&2
echo ccc
で試したところ望みどおりの動作になりました
ありがとうございます

659:デフォルトの名無しさん
16/10/07 11:44:29.04 5wS7M9ck.net
>>621
案1:
FOR /F "delims=" %%I IN ("/aaa/bbb/ccc") DO ECHO %%~nxI
案2:
CALL :SUB "/aaa/bbb/ccc"
GOTO :EOF
:SUB
ECHO %~nx1

660:デフォルトの名無しさん
16/10/07 12:09:19.90 PWoZvLSt.net
色んなやり方があるんだなあ勉強になる

661:デフォルトの名無しさん
16/10/08 07:09:00.83 sXvXMvPu.net
@echo off
set "a=/aaa/bbb/ccc\ddd"
set "b="
call :x a b
echo "%a%"
echo "%b%"
pause
goto :eof
:x
setlocal enabledelayedexpansion
set "a=/!%1!"
set b=-1
:y
set "c=!a:~%b%,1!"
if "!c!" == "/" goto z
set /a b-=1
goto y
:z
set "c=!a:~%b%!"
endlocal & set "%2=%c%"
goto :eof

662:デフォルトの名無しさん
16/10/09 20:38:11.04 mq9cB08l.net
7z.exe x AAA.zip -oBBB >hoge.txt
7z.exeで展開してるんだけど、終了するまえに、
次の処理に行ってしまい、その後がエラーになる。
7z.exeの終了を待つには、どうしたらいいのですか?
>hoge.txtは必要。
start /wait 7z.exe x AAA.zip -oBBB >hoge.txt
では、hoge.txtが空だし、コマンドプロンプトの窓がもう一個開くし。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


663:デフォルトの名無しさん
16/10/09 21:25:06.80 DFuD


664:/t4t.net



665:デフォルトの名無しさん
16/10/10 09:40:47.22 UJJq0Lfa.net
>>635
ありがとうございます。
10回くらいテストして、それ「start /B /wait "" 」でいけました。

666:デフォルトの名無しさん
16/10/12 15:15:40.33 CXMCNpce.net
for %%a in (“*.mkv”) do ffmpeg.exe -i %%a -b:v 3000k -acodec ac3 -ar 48000 -vcodec libx264 D:\encoded\%%~na.mp4

mkvとflvを入力に使いたいです
二重ループ以外に方法ありませんかね?

667:デフォルトの名無しさん
16/10/12 15:33:04.97 V1BPQ8PQ.net
`dir /b *.mkv;*.flv`をキャプチャすればいいんじゃないの
自分なら2行にコピペするがw

668:デフォルトの名無しさん
16/10/12 15:35:36.60 CyghQ6/+.net
"*.*v"
他にvが付くもの無ければ

669:デフォルトの名無しさん
16/10/12 15:38:43.19 CXMCNpce.net
>>638
すみません
2行にコピペするとはどういうことですか?

>>639
私も考えたのですがwmvがありました

670:デフォルトの名無しさん
16/10/12 16:07:30.74 aOSR32QX.net
for %%a in (*.mkv *.flv) do ...

671:デフォルトの名無しさん
16/10/12 16:12:00.02 YqqdfgOM.net
>>640
*.mkvで処理と*.flvで処理と2行for文を書くという意味じゃないかな?
for /f "tokens=*" %%a in ('dir /b *.mkv *.flv') do 〜
とか
dir /b *mkv>files.tmp
dir /b *.flv>>files.tmp
for /f "tokens~*" %%a in (files.tmp) do 〜
del files.tmp
とか色々とか色々と出来るよ

672:デフォルトの名無しさん
16/10/12 16:51:21.25 k+jI1aQa.net
質問です。サブディレクトリのファイルで、0バイトのファイルだけを削除したいです。
以下のページにあるサンプルをベースに、dirに /s をつけてサブディレクトリも
対象とするようにしました。
バッチで自動的に作成したファイルを容量チェックして削除する方法ってありますか? (DOSプロンプト活用相談室LOG)
URLリンク(fpcu.on.coocan.jp)
実行してみると、0バイト以外のファイルも条件が成立してしまい、
動作してくれません。OSがwindows10のせいでしょうか。
FOR /F %%F IN ('dir /s /B') DO ( CALL :CheckFile %%F )
EXIT /B
:CheckFile
SET FileAttrib=%~a1
IF NOT %FileAttrib:~0,1%==d (
IF not "%~z1" == "0" (
ECHO "%1" はファイルサイズが %~z1 で、0 なので削除します。
REM DEL %1
)
)
EXIT /B
==をEQUに変えてみたり、ダブルクォートをつけたりしましたが変化なしでした。
どのように直せば、0バイトのみが引っかかるようにできるか、宜しくお願いします。
なお、上記コードは、安全のためdelはREMをつけたままです。

673:デフォルトの名無しさん
16/10/12 17:01:12.97 k+jI1aQa.net
すいません補足です。
>IF not "%~z1" == "0" (
これは、notがないのが正常な状態です。
なにをやっても条件が成立してしまうので、
ためしにnotをつけて、論理が反転するか試したところ、
これも全部条件が成立してしまいました。
その実験をしたときの残骸のnotが残ってしまいました。

674:デフォルトの名無しさん
16/10/12 17:10:16.64 CyghQ6/+.net
if %~z1==0
のように書く。==の両側にスペース入れたらダメ

675:デフォルトの名無しさん
16/10/12 17:14:15.79 CyghQ6/+.net
それでもダメだったら
CALL :CheckFile %%~fF
を試してみて

676:デフォルトの名無しさん
16/10/12 17:19:24.35 CyghQ6/+.net
IF NOT %FileAttrib:~0,1%==d
これ必要?
dir /a-d /b /s としておけば要らない

677:デフォルトの名無しさん
16/10/12 17:32:19.00 k+jI1aQa.net
ありがとうございます。指摘の件を全て直しましたが、ダメでした。
FOR /F %%F IN ('dir /a-d /s /B') DO ( CALL :CheckFile %%~fF )
EXIT /B
:CheckFile
SET FileAttrib=%~a1
IF %~z1==0 (
ECHO "%1" はファイルサイズが %~z1 で、0 なので削除します。
REM DEL %1
)
EXIT /B

実行結果
 IF 1695606 == 0 (
 "F:\TEST\file.txt" はファイルサイズが 1695606 で、0 なので 削除します。

678:デフォルトの名無しさん
16/10/12 17:37:43.49 h3rHiOkq.net
set hoge="hage te naiyo"
とやると、%hoge%でダブルクォーテーションも読み込んでしまいます
対処法教えて下さい

679:デフォルトの名無しさん
16/10/12 17:44:13.80 X88zouZU.net
パスにスペースが入ってんじゃ?

for /f "delims=" %%i in ('dir /a-d /b /s *.*') do if %%~zi EQU 0 del "%%~fi"

680:デフォルトの名無しさん
16/10/12 17:46:49.24 tJlO+qdh.net
set "hoge=hage te naiyo"

set hoge=hage te naiyo
そもそも "" でくくらない

681:デフォルトの名無しさん
16/10/12 17:54:18.24 YqqdfgOM.net
>>648
本当にそんな表示なのか?
上の IF 1695606 == 0 ( を書いてるということはbatの展開された実行ステートメントを表示してるだけじゃないのか?
正確には
IF 1695606 == 0 (
ECHO "F:\TEST\file.txt" はファイルサイズが 1695606 で、0 なので 削除します。
REM DEL F:\TEST\file.txt
)
と4行表示されただけなんじゃないの?
それと、半角空白の存在するファイル名があったらエラーになるよ
"tokens=*"とか"delims="をつけて、引数は""で囲んで渡すようにした方がいい
(さらに^とかの文字もファイル名に含まれてる可能性があるなら引数渡しは諦めて環境変数で渡すようにする)

682:デフォルトの名無しさん
16/10/12 17:56:29.96 CyghQ6/+.net
for /f "usebackq delims=" %%F in (`dir /a-d /b /s`) do if %%~zF==0 echo %%~F
これで0バイトだけechoされるはずだと思うけど

>>649
set "hoge=hage te naiyo"

683:デフォルトの名無しさん
16/10/12 18:07:46.52 YqqdfgOM.net
>>649
もし何らかの理由で""を付いたままで代入しなくてはいけないのなら、その後で取ることは出来る
set hoge=%hoge:"=%
とか
set hoge=%hoge:~1,-1%
とか
まあ後者は"が付いているかどうかチェックした方がいいけど
if ^%hoge:~0,1% equ ^" set hoge=%hoge:~1,-1%

684:デフォルトの名無しさん
16/10/12 18:12:36.27 CyghQ6/+.net
後から外す場合はcallやforで%~1や%%~Iでも可

685:デフォルトの名無しさん
16/10/12 18:13:42.95 k+jI1aQa.net
>>652
すみません、こちらの勘違いでした。教えていただいたコードで動きました。
echo off していないため、条件が成立しないコードが表示されてるのを見て、
あたかも実行されているかのように勘違いしてるだけでした。

この手のトラブルが嫌いなので対象のファイル名に空白は入っていませんでした。
完成形ですが、空白が含まれているファイル名も処理する場合は、以下で大丈夫でしょうか。

echo off
FOR /F %%F IN ('dir /a-d /s /B') DO ( CALL :CheckFile %%~fF )
echo 処理終わり。
pause
EXIT /B

:CheckFile
SET FileAttrib=%~a1
IF "%~z1"=="0" (
ECHO "%1" はファイルサイズが %~z1 で、0 なので削除します。
DEL "%1"
) else (
ECHO "%1" はファイルサイズが %~z1 で、削除しません。
)
EXIT /B

686:デフォルトの名無しさん
16/10/12 18:31:53.33 k+jI1aQa.net
うーん・・・このバッチだと、0バイトかどうか調べる対象ディレクトリが1000個、総ファイルが10万個とか有ると、
最初のforから全然進んでくれないようです。
core-i5で10分待っても開始されず。ディスクの能力じゃ無く、BATのCPU消費率が上がります。
>>653さんの書き方で、大量ファイルの処理時の挙動は変化するか、これから試してみます。
大量処理に適した書き方などがあったらご教示ください。

687:デフォルトの名無しさん
16/10/12 18:44:53.26 YqqdfgOM.net
>>657
そんな大量のファイルは無いので定かではないけど、多分バッファが溢れてるんじゃないかと思う
一旦ファイルに書き出したらどうだろ?
dir /a-d /s /b>list.tmp
for /f %%F in (list.tmp) do

688:デフォルトの名無しさん
16/10/12 18:59:59.00 CyghQ6/+.net
10万とか処理させたこと無いけどバッチよりもPowerShell使った方が良いんじゃね?

689:デフォルトの名無しさん
16/10/12 19:01:10.45 RjRHLuRO.net
>>642
ありがとうございます
出来ました
それともう一つ
エンコードの進捗状況を表示する事ってできませんかね?
12/87(ファイル)みたいな感じで

690:デフォルトの名無しさん
16/10/12 20:02:06.24 nxsWiPWy.net
forfiles使う方法も
forfiles /s /c "cmd /c if @isdir==FALSE if @fsize==0 del @file"

691:デフォルトの名無しさん
16/10/12 20:08:20.15 IaZq30Xa.net
Windows 10 だと rd hoge /S /Q でなかなかhogeディレクトリを削除できないけど、
なにかいい方法ありますか?

692:デフォルトの名無しさん
16/10/12 20:19:09.72 WWSUEmVo.net
>>661
for が速いとは言わないが forfiles は輪をかけて遅いから辛いんじゃないかな

693:デフォルトの名無しさん
16/10/12 20:31:06.50 YqqdfgOM.net
>>660
大昔DOSにあったansi.sysのようにエスケープシーケンスが使えたら可能なんだけどね
噂じゃwinsows10でエスケープシーケンスが使えるようになったとかの話もあるけど真偽のほどはどうなんだろ

694:デフォルトの名無しさん
16/10/13 00:46:44.28 cRZfvb+W.net
>>656
以下に修正したほうがいいけど、ざっと見ただけだから他にもあるかもw

FOR /F %%F IN ('dir /a-d /s /B') DO ( CALL :CheckFile %%~fF )

FOR /F

695:デフォルトの名無しさん
16/10/13 00:49:54.35 cRZfvb+W.net
FOR /F %%F IN ('dir /a-d /s /B') DO ( CALL :CheckFile %%~fF )

FOR /F "delims=" %%F IN ('dir /a-d /s /B') DO ( CALL :CheckFile "%%~fF" )

IF "%~z1"=="0" (

IF %~z1==0 (

ECHO "%1" はファイルサイズが

ECHO "%~1" はファイルサイズが

DEL "%1"

DEL "%~1"

サブルーチンへ引数を渡す際はダブルクォート記号が過不足なく評価されているか実行前に要テストね
それと、ifの数値比較についてはヘルプ読むべし。数字以外を含むと文字列比較になるから

696:デフォルトの名無しさん
16/10/13 01:11:54.49 nRww2f6N.net
>>652が指摘してるけど、
もしファイル名が "a^b.txt" だったり、 "ab%cd%ed.txt" だったりしたらエラーになると思う

697:デフォルトの名無しさん
16/10/13 02:20:45.86 9ieIMwqB.net
>>657
FOR /R %%F IN (*.*) DO ( CALL :CheckFile %%~fF )

にしたらマシになる?

698:デフォルトの名無しさん
16/10/13 02:28:09.62 9ieIMwqB.net
あ、折角指摘が出てたのに修正漏れ

%%~fF → "%%~fF"

699:デフォルトの名無しさん
16/10/13 02:30:01.50 nRww2f6N.net
>>668
本来の目的だった半角空白のことを忘れたんか

700:デフォルトの名無しさん
16/10/13 08:14:45.67 CLiojDhV.net
>>667
そんなのまで対応しないといけないなら vbs とか PowerShell にした方がいいと思う

701:デフォルトの名無しさん
16/10/13 19:02:37.99 tpWzBOlc.net
call するなら環境変数で渡せば問題ない
つうか直接に del すりゃいいだけだろ
for /r %%i in (*) do if %%~zi == 0 del "%%~fi"
ファイル名に ^ とか % とか ユニコード特有文字とか有っても問題ない
あと、==の両側にスペースがダメとか意味不明

702:デフォルトの名無しさん
16/10/13 23:49:13.04 BSlfrai+.net
for %%a in (*hoge.txt) do 〜
この場合、ファイル名がaiueohoge.txtだった場合、aiueoだけを抜き出す方法有りませんか?
%%~naみたいな演算子?でお願いします

703:デフォルトの名無しさん
16/10/14 01:11:11.25 Ep7xlThW.net
>%%~naみたいな演算子?でお願いします
無理
一旦環境変数に入れて置換でhoge.txtを消し残りを取り出す事%fname:hoge.txt=%や
%fname:~0,-8%なら可能
set fname=%%~na
echo %fname:~0,-4%

704:デフォルトの名無しさん
16/10/14 03:21:39.34 onADalnL.net
@echo off
set

705:デフォルトの名無しさん
16/10/14 03:24:46.91 onADalnL.net
set "fname=*hoge.txt" & set b=-1
setlocal enabledelayedexpansion
:x
if not "!fname:~%b%,1!" == "*" set /a b-=1 & goto x
endlocal & set /a b=%b%+1
for %%a in ("%fname%") do set "c=%%~nxa" & call echo "%%c:~0,%b%%%"

706:デフォルトの名無しさん
16/10/14 20:38:01.10 YifyNonQ.net
ありがとうございます
set

707:デフォルトの名無しさん
16/10/14 20:40:05.91 YifyNonQ.net
"ありがとうございます
set "fname=*hoge.txt" & set b=-1
setlocal enabledelayedexpansion
:x
if not "!fname:~%b%,1!" == "*" set /a b-=1 & goto x
endlocal & set /a b=%b%+1
for %%a in ("%fname%") do set "c=%%~nxa" & HOGE "%%c:~0,%b%%%"
ここでHOGEに処理を入れ、"%%c:~0,%b%%%"をファイル名として使えばいいんですかね?
それとfor文で入力に使った*hoge.txtのだけ*hogeだけ抜き出したい場合は


708:どうすればいいんでしょうか



709:デフォルトの名無しさん
16/10/14 22:54:24.45 +Ryxbx0f.net
>>678
call echo %%c:~0,%b%%%
は環境変数の遅延展開を使わず展開させる方法だから、別の処理で置き換えるなら、
HOGE !c:~0,%b%!
のように!記号でくくる方向で(call foo はどのコマンドでも使えるわけではないため)
ファイル名の抜き出しは、パラメーターで調整できると思う
バッチパラメーターについては「call /?」あたりから

710:デフォルトの名無しさん
16/10/14 23:02:08.75 +Ryxbx0f.net
ID違うからわかると思うけど、>>676とは別人なのであしからず(言い忘れすまそ)

711:デフォルトの名無しさん
16/10/14 23:39:49.51 Ep7xlThW.net
>aiueohoge.txtだった場合、aiueoだけを抜き出す方法有りませんか?
>>676が示してくれただけで
>HOGEに処理を入れ、"%%c:~0,%b%%%"をファイル名として使えばいいんですかね?
そんな質問されてもファイル名として使うのかどう処理するのかとか分かる訳ねーだろ
aiueoをリネームに使うのか?何がしたいのか分からん事には答えようがない

712:デフォルトの名無しさん
16/10/15 00:10:29.36 GrBj6Sia.net
>>678 質問の意図がよく分からん

set "fname=*hoge.txt" & set b=-1
setlocal enabledelayedexpansion
:x
if not "!fname:~%b%,1!" == "*" set /a b-=1 & goto x
endlocal & set /a b=%b%+1
for %%a in ("%fname%") do set "c=%%~nxa" & call :y "%%c:~0,%b%%%" "%%c%%"
goto :eof
:y
echo hoge "%~1" "%~n2"

713:デフォルトの名無しさん
16/10/15 23:20:33.46 DDtj3KwG.net
バッチ初心者です。
Windowsのタスクで指定時間した時間になったら、バッチファイルで指定した常駐ソフトを再起動(終了→起動)させたいのですが、
taskkill /f /im app.exe
start /MIN "" "C:\app.exe"
のようにして最小化(/MIN)で起動するようにすると、そのソフトは何故かウインドウのスクロールバーが何故か消えてしまいます。
なので一旦アクティブで起動させてスクロールバーを表示させてから最小化したいのですが、方法がわかりません。
taskkill /f /im app.exe
start "" "C:\app.exe"
で起動させたあと、アクティブなapp.exeをコマンドで最小化する方法があったら教えてください。
よろしくお願いします。

714:デフォルトの名無しさん
16/10/16 06:33:42.07 e+WiyjQC.net
バッチにそんな機能はない
ahkなら
IfWinExist ahk_exe app.exe
   WinMinimize

715:672
16/10/16 10:52:23.32 lNEScQ2P.net
抽象的な事を言って困らせてすみません
何をやりたいのかと言うと、youtubeから落とした動画がhoge -【DASH】.mp4とhoge - 【DASH】.m4aとなっているので、
これを
ffmpeg -i hoge - 【DASH】.mp4 -vcodec copy -i hoge - 【DASH】.m4a -acodec copy hoge.mp4
とエンコードして、
hoge【DASH】.mp4をforで検索して、その拡張子を取ったものを入力として使い、出力ファイル名として、hoge.mp4としたかったのです

716:デフォルトの名無しさん
16/10/16 17:03:52.47 z1QBGf3F.net
>>660
set /p で改行を入れない文字列を出力して
コントロールコードのBSで消す

@echo off
set bs=[BS]
set delline=%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%
for /L %%i in (1,1,10) do (
set /p x=%delline%%%i/10 <nul
timeout /t 1 >nul
)

717:デフォルトの名無しさん
16/10/16 19:44:42.76 l/p5e+57.net
>>685
set "fname=* - 【DASH】.mp4" & set b=-1
setlocal enabledelayedexpansion
:x
if not "!fname:~%b%,1!" == "*" set /a b-=1 & goto x
endlocal & set /a b=%b%+1
for %%a in ("%fname%") do set "c=%%~nxa" & call :y "%%c:~0,%b%%%" "%%c%%"
goto :eof
:y
ffmpeg -i "%~n2.mp4" -vcodec copy -i "%~n2.m4a" -acodec copy "%~1.mp4"

718:デフォルトの名無しさん
16/10/16 21:03:50.48 cWFHk7WJ.net
>>686
コントロールコードを挿入できない人用
set bs=[BS]
  ↓
for /f "delims=0" %%I in ('cmd /u /c echo 〈') do set bs=%%I

719:その1
16/10/18 10:49:49.38 492hutXa.net
サーバサービスの起動条件がスタートアップ状態が自動でありながら
開始になっていないものをバッチで出力したい

とりあえずSCコマンドを使ってこんなことすると
sc \\HOGE query state= inactive |find "SERVICE_NAME" >hoge.txt

下記のような起動していないサービスの名前がテキストに吐かれる
SERVICE_NAME: AeLookupSvc
SERVICE_NAME: ALG
SERVICE_NAME: AppIDSvc
SERVICE_NAME: AppleChargerSrv
SERVICE_NAME: AppMgmt
SERVICE_NAME: aspnet_state
SERVICE_NAME: AudioEndpointBuilder
SERVICE_NAME: AudioSrv
SERVICE_NAME: AxInstSV
SERVICE_NAME: BDESVC
SERVICE_NAME: Browser
(以下 略)

720:その2
16/10/18 10:50:03.97 492hutXa.net
そしてサービスのスタートアップ状態を調べるには
sc qc [サービス名]で表示される
sc \\HOGE qc AeLookupSvc |findstr "SERVICE_NAME START_TYPE"

この2つを組合せればフルオートで起動条件がスタートアップ状態が自動でありながら
開始になっていないものを出せるはずなんだが
「SERVICE_NAME:」←これが邪魔なんだ
教えてエロい人

これが消せたら下記でフルオートできるはず
@for /F %%=a in ('hoge.txt') do (
sc \\HOGE qc %%a
)

721:デフォルトの名無しさん
16/10/18 12:27:03.23 6Un6ctsT.net
for /f "tokens=1*" %%A in (hoge.txt) do echo %%B

722:デフォルトの名無しさん
16/10/18 12:44:29.69 oqQNu1fO.net
for /f

723:デフォルトの名無しさん
16/10/18 12:46:48.12 oqQNu1fO.net
for /f "usebackq tokens=2*" %%a in ("hoge.txt") do sc \\HOGE qc %%a

724:デフォルトの名無しさん
16/10/18 12:59:57.92 oqQNu1fO.net
"tokens=1*" %%b が正しい

725:デフォルトの名無しさん
16/10/18 13:04:01.66 492hutXa.net
面目ない、誤解させてしまったかも
オイラが知りたいのは

sc \\HOGE query state= inactive |find "SERVICE_NAME" >hoge.txt

で出力される下記を
SERVICE_NAME: AeLookupSvc
SERVICE_NAME: ALG
SERVICE_NAME: AppIDSvc
SERVICE_NAME: AppleChargerSrv
SERVICE_NAME: AppMgmt
(以下 略)

先頭の文字列「SERVICE_NAME:」を外して出力したいというのが主旨です
AeLookupSvc
ALG
AppIDSvc
AppleChargerSrv
AppMgmt
(以下 略)

726:デフォルトの名無しさん
16/10/18 13:39:39.76 oqQNu1fO.net
for /f "tokens=1*" %%a in ('sc \\HOGE query state^=inactive ^| find "SERVICE_NAME"') do echo %%b >>hoge.txt

727:デフォルトの名無しさん
16/10/18 13:41:17.91 l1RYXy70.net
サービス扱うならPowerShellの方が楽でいいよ。
バッチから呼ぶならこんな感じ。
powershell -command

728:デフォルトの名無しさん
16/10/18 13:44:58.91 l1RYXy70.net
ダブルクオーテーション使うとそこで切れるんだけど書き込めてる人との違いってなんなんだろう

729:デフォルトの名無しさん
16/10/18 13:49:59.99 l1RYXy70.net
powershell -command ”Get-Service | ?{$_.StartType -eq 'Automatic' -and $_.Status -eq 'Stopped'}”

730:デフォルトの名無しさん
16/10/18 13:51:45.76 flBcMs6G.net
てすと
powershell -command "Get-Service | ?{$_.StartType -eq 'Automatic' -and $_.Status -eq 'Stopped'}"

731:デフォルトの名無しさん
16/10/18 13:52:36.16 UJ1l7XRj.net
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=:" %%i in ('sc \\HOGE query state^= inactive') do (
if "%%i"=="SERVICE_NAME" set name=%%j
echo;!name:~1!>hoge.txt
)

732:デフォルトの名無しさん
16/10/18 17:21:44.41 IWtXyw3/.net
ありがとうございます
早速試してみたのですが・・・

まずパワーシェルの方は「$_.StartType -eq 'Automatic'」これが効かないようです
(「$_.Status -eq 'Stopped'」こちらは効いてます)

バッチの方は1件目の「WwanSvc」だけで終ってしまうようです

733:デフォルトの名無しさん
16/10/18 17:24:37.38 XKgIhtEU.net
バッチファイルってWindowsタブレットで使える?

734:デフォルトの名無しさん
16/10/18 17:25:51.36 IWtXyw3/.net
大事な事を忘れてました

CL:Windows7プロ SP1(32bit)6.1.7601
SV:WindowsSV 2008R2 SP1(64bit)

735:デフォルトの名無しさん
16/10/18 17:59:25.19 oqQNu1fO.net
>「WwanSvc」だけで終ってしまう
>hoge.txtと上書きしてるんじゃ?>>hoge.txtと追記になってる?

736:デフォルトの名無しさん
16/10/18 20:40:09.09 UJ1l7XRj.net
アウチ!
ミスってた

>>705の通り。695追記になってない

×echo;!name:~1!>hoge.txt
〇echo;!name:~1!>>hoge.txt

737:デフォルトの名無しさん
16/10/18 22:14:57.94 N6eA0nOq.net
なるほど、追記になってなかったんですね
ただ、今度は同じサービス名が8回ずつ記録されるようになってしまいました
PCがおかしいのかなとwindows7とwindows8.1、そして懐かしのWindows2000で試しても
同じように8回ずつ記録されてしまうようです


AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
ALG
ALG
ALG
ALG
ALG
ALG
ALG
ALG
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc

738:デフォルトの名無しさん
16/10/18 22:41:11.76 UJ1l7XRj.net
type nul>hoge.txt
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=:" %%i in ('sc query state^= inactive') do (
if "%%i"=="SERVICE_NAME" (
set name=%%j
echo;!name:~1!>>hoge.txt
)
)

739:デフォルトの名無しさん
16/10/18 23:32:59.96 N6eA0nOq.net
>>708
成功しました
カッコの有無でなんでこんなに違うんだろうと不思議です

740:デフォルトの名無しさん
16/10/19


741:01:04:29.51 ID:OIm1eZAK.net



742:デフォルトの名無しさん
16/10/19 01:12:10.60 cKBmHXZY.net
そんな回りくどい事しなくても>>696で出来んじゃん

743:デフォルトの名無しさん
16/10/19 07:11:53.90 Jbfd2Dlj.net
>>696は一瞬コマンド窓が開くだけで動かなかったのです

744:デフォルトの名無しさん
16/10/19 07:56:59.52 OiCCOICb.net
>>698
2chのバグだろ

書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" を、\" とエスケープすれば、どうかな?

745:デフォルトの名無しさん
16/10/19 12:52:41.93 nMHfZfYD.net
&#34; と文字参照を使って書き込めばいいのでは?
結果として " となるはず。

746:694
16/10/19 13:03:34.54 fhJbq8nW.net
JaneXenoでは特別な事しなくても書き込めた

747:デフォルトの名無しさん
16/10/20 18:11:41.71 fyY9mWCP.net
いっつもStyleで書いてるけど"で切れたことなど一度もないけどなあ

748:デフォルトの名無しさん
16/10/20 18:13:00.13 1rA0OcU3.net
>>687
遅くなってすいません
無事動きました
ありがとうございます

749:デフォルトの名無しさん
16/10/20 19:03:20.93 LBhOxlVJ.net
ダブルクオーテーションで切れるのこれっぽい。
スレリンク(unix板:777番)
自分も確かにこのケースだった。

750:デフォルトの名無しさん
16/11/02 06:03:13.96 CHmLMhVd.net
バッチファイル終了のお知らせ

“Microsoft Flow”が正式公開。さまざまなサービスを組み合わせた自動処理が可能 - 窓の杜
URLリンク(forest.watch.impress.co.jp)

751:デフォルトの名無しさん
16/11/02 06:40:56.27 w2Q1/JQP.net
アイデアは良いと思うが

>さまざまなアプリやサービスを組み合わせた自動処理を作成できるクラウドサービス“Microsoft Flow”を正式公開した。
>“Microsoft Flow”は“○○したら××する”といった一連の手続き(ワークフロー)をビジュアルでデザインし、自動実行できるサービス
>料金は1ユーザー1カ月あたり750回までの実行であれば無料。有償プランであれば実行回数が増える

回数制限で有料とかゴミすぎ

752:デフォルトの名無しさん
16/11/02 09:32:20.20 5fVzD+K5.net
こんなのは華や茶の流派と同じで新しいのがでても統合などされることは無いんだよね

753:デフォルトの名無しさん
16/11/02 23:59:36.62 WEv5cQ3m.net
>>719-720
ワークフローなんか各社から出てるじゃん。

754:デフォルトの名無しさん
16/11/04 00:14:32.57 0ODaAY82.net
そういうのってネットに繋いでない時にも必要なのにクラウドサービスって
しかも有料って

755:デフォルトの名無しさん
16/11/04 01:47:32.80 DvwqGnEZ.net
完全にスタンドアロンで放置して動かすときにクラウドなんて使ってられない

756:デフォルトの名無しさん
16/11/10 06:45:58.93 +oUm9x6Y.net
TidyTabs Window Manager: give every program a tabbed user interface
URLリンク(www.nurgo-software.com)

757:デフォルトの名無しさん
16/11/11 12:54:54.72 ZYU/THNy.net
batファイルをつくりたいのですが、どのようにすればいいでしょうか
全くの初心者なのでヒントが欲しいです

目標としては、

親フォル


758:_Aの中に、子フォルダ[aaa]あああ、[aaa]いいい、[bbb]ううう があります @([aaa]あああ)の[ ]内の文字(つまりaaa)を自動で取得し、その名前の新規フォルダを作成。(つまりaaaという名前の新規フォルダ) Aその後、親フォルダA内の[aaa]が入っているフォルダを検索する B Aで検索された複数フォルダを@で作成されたフォルダに入れる という流れを自動で行いたいです



759:デフォルトの名無しさん
16/11/11 14:42:02.48 OyxHpcMK.net
>>726
親フォルダを引数で渡すとしての一例
@echo off
pushd %1
for %%i in ([*]*) do (
for /f "tokens=1* delims=[]" %%j in ("%%~i") do >nul 2>&1 (md "%%~j"&move /y "%%~i" "%%~j")
)
popd

760:デフォルトの名無しさん
16/11/11 15:12:14.98 p31+l1cx.net
>>727
最初のforは/dつけないとだめでは

761:デフォルトの名無しさん
16/11/11 15:56:59.78 OyxHpcMK.net
おおー、フォルダだったのか
てっきりファイルだと思い込んでたよ

762:デフォルトの名無しさん
16/11/13 18:37:37.78 cer+jHW2.net
質問させていただきます
初めてバッチファイル、コマンドプロンプトを勉強して作っているのですが、HTMLページから特定のURLを抜き出してバッチファイルに代入したいのですが、その場合はWSH等で抜き出さないと出来ませんでしょうか

763:デフォルトの名無しさん
16/11/13 20:15:27.03 YAp+h9P5.net
>>730
HTMLページって具体的に何?

764:デフォルトの名無しさん
16/11/13 20:16:08.95 vGjlz1Ep.net
そんな大雑把過ぎる質問では最適解など分かるはずもなくレスつかないよ
PowerShell使ったら?

765:デフォルトの名無しさん
16/11/13 20:19:41.15 cer+jHW2.net
>>731
OPENREC.tvという動画サイトです
ここから動画ファイルのURLを吸い出して、エンコソフトをコマンドプロンプトに直接代入したいと思いまして・・・

>>732
すみません、この手の事は不慣れで・・・
PowerShellというものを初めて知りましたので、調べてみます

766:デフォルトの名無しさん
16/11/13 23:00:08.77 BL+CTUiW.net
手段の前にまず手順を具体的に整理して見るといい

要件についてまったく何も知らない他人に
全部手作業でやってもらうよう依頼するとしたらどう説明する?

767:デフォルトの名無しさん
16/11/14 01:02:54.70 csZc9y3a.net
松岡修造みたいにすると思う。

768:デフォルトの名無しさん
16/11/14 13:10:56.92 vvHHVAL2.net
バッチなんて所詮手作業を自動化するだけ

ここでは手作業を自動化するのを支援することは出来るが
手作業で出来ないor内容がわかってない人はどうしようもない

769:デフォルトの名無しさん
16/11/14 14:36:44.38 O1UQmJEN.net
>>733
1.PowerShellで.NETFramework使う
2.PythonやRubyなんかのllを使う
3.C#で簡単プログラミング
さあ選べ

770:デフォルトの名無しさん
16/11/14 15:07:34.34 WHs7zj8I.net
この場合は、バッチファイルにて
htmlを取得して、url文字列を抜き出して、エンコソフトにオプション渡し
ができるのか?、という問いなので、さあ答えは

771:デフォルトの名無しさん
16/11/14 15:27:55.44 bnBDmUvf.net
>>733
そこのサイトは知らんけど
>動画ファイルのURLを吸い出して
なんて書いてるけど今時動画ファイル直リンなんてあるの?手段すら分かってないんじゃない?
この手の技術に明るくないのであれば既存ソフトを用いてUWSCやAHKで自動化が現実的だと思う
rtmpdumpみたいなcuiソフトがそのサイトで使えるならバッチで出来ると思うが

772:デフォルトの名無しさん
16/11/14 15:29:20.63 9SfC86lS.net
動画サイトって普通ストリームじゃないの?
URLからダウンロード、エンコって、まず手作業でどういう手順で行うのか説明してくれないと
wshやPowershellでだって出来るかどうかも答えられないよ

773:デフォルトの名無しさん
16/11/14 19:02:24.4


774:0 ID:GWnO6+Yj.net



775:デフォルトの名無しさん
16/11/14 19:40:40.70 kXxSR+Dw.net
>>741
人に聞くならまず正しい日本語で頼む

> 今までは動画ページからm3u8形式の格納されてるURLをソースから引っ張ってきて

君には動画ページとかソースが何者かがわかってるんだろうけど、他の人にはそれが何者なのか?どこから与えられるのか?とか全然わからない

776:デフォルトの名無しさん
16/11/14 20:28:41.10 8ZP1uHGR.net
>>741
その動画サイトとやらを教えられない理由があるなら
先に説明しておく方が親切だよ

777:デフォルトの名無しさん
16/11/14 20:35:09.15 GWnO6+Yj.net
>>733でも書いた通り、openrec.tvというサイトです
動画ページはどこを見ても同じソースだと思うので深く考えず、URLを載せなかっただけですがやはり載せた方がよろしいでしょうか?

divタグ内に変数で各情報が載っておりますが、そこは重要ではなく>>738が仰ってる通りです

778:デフォルトの名無しさん
16/11/14 20:51:56.98 sZZGpXNZ.net
>>741
普段使いのcURLというCUIなダウンローダーで試した、使いたいツールがあるならお好みでどぞ
URLリンク(curl.haxx.se)
URLリンク(bintray.com)
Win32 - GenericにあるSSL, SSH対応版ね

前提として、外部ツールの検索パスは設定済みとする
バッチファイルの引数としてURLをひとつ渡す。例: batchfile.bat URLリンク(www.openrec.tv)
ここから
@echo on
setlocal ENABLEEXTENSIONS
cd /D %~dp0

@rem 引数有無と引数名チェック
if "%~1"=="" goto ERROR
echo;%1|findstr /R /C:"^http" /C:"openrec" >NUL||(echo "%1" を処理できません) && goto ERROR

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

@rem HTMLダウンロード
curl -L --max-redirs 10 -R -O %ADDR%

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

echo ffmpeg -c copy "%TITLE%.ts" -i "%TARGET%"
pause
exit
ここまで


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1839日前に更新/325 KB
担当:undef