1 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 14:52:07.84 ID:v84I4o+L.net] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 前スレ 【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net echo.2ch.net/test/read.cgi/tech/1424858999/ 【.cmd】 バッチファイルスクリプト %12 【.bat】 https://mevius.5ch.net/test/read.cgi/tech/1489207631/ それ以前の過去スレ %10 peace.2ch.net/test/read.cgi/tech/1374205515/ %9 toro.2ch.net/test/read.cgi/tech/1335015478/ %8 toro.2ch.net/test/read.cgi/tech/1315844420/ %7 hibari.2ch.net/test/read.cgi/tech/1298873550/ %6 hibari.2ch.net/test/read.cgi/tech/1277465356/ %5 pc12.2ch.net/test/read.cgi/tech/1242268171/ %4 pc12.2ch.net/test/read.cgi/tech/1229955189/ %3 pc11.2ch.net/test/read.cgi/tech/1217860043/ %2 pc12.2ch.net/test/read.cgi/tech/1197881068/ %1 pc11.2ch.net/test/read.cgi/tech/1178281991/
541 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 20:50:16.92 ID:wTTuQQRz.net] バッチファイルは難しすぎ! 引数の概念がLinuxと全く違う
542 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 23:04:29.95 ID:wTTuQQRz.net] 空白が入ったパスをバッチファイルにわたすために ダブルクォートで括らないといけないが、 それをやると、変数にダブルクォートが入るのがクソなんだな しかも、if "%1" == "" とか書くと、引数がダブルクォート 一個だったときにエラーが出るとかいろいろ破綻してる
543 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 01:48:00 ID:4r3ojeSB.net] >>522 難しすぎというよりは適当仕様すぎ 仕様を安易に何回も拡張した、増築して迷路化した老舗旅館
544 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 04:42:48.88 ID:nSoHFrko.net] >>511 @for %%s 以下略じゃダメなの?
545 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 06:29:37.44 ID:lb8cogBR.net] >>525 それならdoの後のforとxcopyにも@付けろ 何でも一行にすりゃいいわけじゃないがな
546 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 06:59:41.26 ID:LFqMQC4+.net] >>523 %~1で外せるでしょ?
547 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 07:54:19.69 ID:isVFtAa0.net] >>520 さんありがとうございます ”これこそが私の求めていたものだ” そんな慣用句?ローマの名文句?ってあったっけと思ってしまいますた。 000と00の入力処理で使いやすくなっているのがセンスというか実際の使用を考えた親切な仕様だなと思います。 訂正できるのは本当に便利だ。 VBSとRubyで書いてくださった>>517 さんと>>518 さんにも感謝。 自分の要求仕様がどう解釈・解決されるの
548 名前:か勉強になります。 [] [ここ壊れてます]
549 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 09:58:22.71 ID:d6TMJd25.net] >>528 冗談で書いたんだが。。これなら同様のアプリ探した方がいいんじゃない? あと以下修正、>>521 部分も含む :INPUT set N%i%= set /p N%i%=数値を入力 : if not defined N%i% (echo 入力無効 &goto :INPUT) echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto :INPUT) Clear後に空入力繰り返すと消したのが戻ってまたClearしてと繰り返す挙動が直る 実害無いだろうから敢えてそのままにするのも有り 既存の環境変数に set /p で空入力しても 空で上書き初期化されずそのまま残るみたい
550 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 10:37:33.42 ID:sEmiRyTj.net] >>527 どこ見てもその程度。みんな適当なんだよな。 まず最初に書いた例から。バッチファイル(test.bat)を 1.このように書いた時 if "%1" == "" echo 引数なし > test.bat " コマンドの構文が誤っています。 2.このように書いた時 if "%~1" == "" echo 引数なし > test.bat " 引数なし ※↑間違い。「"」という引数があります。 3. このように書いた時 if %~1 == "" echo 引数なし > test.bat " echo の使い方が誤っています。
551 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:19:13.92 ID:Z6Qb1qTa.net] Windowsバッチの仕様がダメダメというのはそのとおりだが、 引数が " だけというのは、かなり特殊な想定だよな。 これが大丈夫という言語ってあるのか? この場合とは違うが、外部アプリから""でくくったパスなどを渡してもらうときは、 アプリの方で、\"〜\"で吐き出すように設定して、 バッチファイルで、この\を削除するようにすることで、 引数展開でおかしな動作をさせないようにしている。 e.g. fxのOpenWithアドオンなど
552 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:32:04.92 ID:sEmiRyTj.net] >>531 言語関係ない。コマンドプロンプトの仕様だから 例えばechoでダブルクォートだけを出力したいなら echo " と書くしか無い。 PowerShellとかコマンドプロンプトを使わないなら 閉じてないダブルクォートの扱いを変えることは可能だが、 コマンドプロンプトはもうどうしようもないw そしてこれ(もともとはMS-DOSの仕様)を前提に Windows版のC言語とかのCRTライブラリが作られ、 mainに渡る前に、そういう文字列を解釈するようになってる。
553 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:33:31.15 ID:sEmiRyTj.net] > この場合とは違うが、外部アプリから""でくくったパスなどを渡してもらうときは、 > アプリの方で、\"〜\"で吐き出すように設定して、 いきあたりばったりなんだよなw 本当にここらへんの奴らは適当
554 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:40:37.56 ID:sEmiRyTj.net] https://thinca.hate nablog.com/entry/20100210/1265813598 \ は、 ダブルクォートの内外を問わず、" の前に \ を前置すると " 自身を表現できる。 \\" とすると \" の \ をエスケープしたことになり、 \" になる。この " は特殊文字である。 \\\" とすると \\ + \" になり、 \" になる。この " は " 文字自身である。 以下、\ が増える度に上記のようなエスケープを繰り返す。 \\\\" → \\" (" は特殊文字) \\\\\" → \\" (" は通常文字) 上記以外の場所にある \、つまり後に " が続かない \ は、いくつ重なっていてもその文字自身になる。
555 名前:デフォルトの名無しさん [2019/11/07(木) 12:53:05.11 ID:LDERshfw.net] >>528 バッチ/シェルスクリプトは、複雑なプログラミングをするものじゃない! Ruby, PowerShell, VBScript などを使うべき まず、データの仕様を作るべき。 その程度のデータなら、普通は、CSV 形式とか 1. どこかのサイトから、データの集積物を取得する 2. それをパースして、CSV 形式に変換する 一旦、CSV へ変換すれば、 その後は、Rubyなど、様々なプログラミング言語で処理できる 1の部分は、Ruby, Selenium WebDriver などで、クローラー・スクレイピングも出来る
556 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:58:16.29 ID:lb8cogBR.net] >>531 まったくスレチだけどG
557 名前:nuPGのパスワードを思い出した 引用符だけのパスワードを渡す場合は pass " >gpg -c --passphrase ^""" hoge.txt pass "" >gpg -c --passphrase """""" hoge.txt pass """ >gpg -c --passphrase ^""""""""" hoge.txt 何でこうなるかは知らんがGnuPGだけの話さ コマンド側でどう引数処理するかだよな バッチでは普通ダメだね [] [ここ壊れてます]
558 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 13:04:39.19 ID:sEmiRyTj.net] ダブルクォートを"""と3個やっても動かないときは、 """" に増やして動くか """"" に増やして動くか """"" に増やして動くか これぐらいまで試す あるある
559 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 13:26:56.23 ID:Z6Qb1qTa.net] >>536 クォートの先頭にエスケープが必要な場合でも、 後ろの方は何故かエスケープが不要なことがあるんだよな。 *nix系から移植したプログラムで、こういう事がたまに起きる。 いずれにしても、謎仕様…
560 名前:デフォルトの名無しさん mailto:sage [2019/11/08(金) 05:39:07.91 ID:78hADO4V.net] set x=echo %x% qqq set a=y set %a%=3 echo %y% どちらもできた
561 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 12:37:18.78 ID:9Z+ynpem.net] もう無理だw if "%value%" == "" echo match こんな感じのコードで、%value% にどんな文字 (ダブルクオート、スペース、カンマ、その他記号)が 入っていてもエラーにならないというコードを バッチファイルで書くのは不可能だw お手上げ\(-o-)/
562 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 12:55:41.49 ID:hmJLHo7y.net] IF NOT DEFINED VALUE
563 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:02:21.70 ID:9HGwW/1Y.net] >>541 あ、ごめん。実際は右側、値が入ってる。 if "%value%" == "abc" echo match
564 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:03:25.05 ID:hmJLHo7y.net] setlocal enabledelayedexpansion if "!value!"=="abc" echo match endlocal
565 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:14:34.88 ID:9HGwW/1Y.net] あれ?マジで?それだけでいけちゃうの?
566 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:22:47.16 ID:hmJLHo7y.net] これな、"abc"の方が要注意なんよ ^とか!とか入ってるとやばいかも setlocalの前に代入して if !a!==!b! とかやった方がええかもな
567 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:53:03.27 ID:9HGwW/1Y.net] >>545 右側、固定値なら大丈夫だよね?
568 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:00:20.08 ID:hmJLHo7y.net] うん多分、変な文字入って無けりゃね 遅延モードだと全角文字のリテラルにも一部副作用が有るかも
569 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:07:53.35 ID:9HGwW/1Y.net] なんだよ、全角文字の副作用って・・・ せっかく進んだのにw
570 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:15:55.11 ID:hmJLHo7y.net] setlocalの外で代入すりゃ問題ない 遅延の中では書くな あと、if !a!==!b! に " はたぶん不要
571 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:26:55.47 ID:9HGwW/1Y.net] setlocalの中で代入するとなにか問題があるのか・・・
572 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:37:46.76 ID:hmJLHo7y.net] ええと setlocal enabledelayedexpansion 〜 endlocal の中だよ
573 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 15:15:35.38 ID:hmJLHo7y.net] >>550 すまん。おれの勘違いだった 全角文字は関係無かった。無視してください でも^や!は要注意だけど
574 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 17:06:16.41 ID:hmJLHo7y.net] でもif文自体が挙動不審だからなあ if "ーー"=="""" echo 同じ
575 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 20:49:07.09 ID:9HGwW/1Y.net] >>553 ShiftJISだとだめだけど、バッチファイルをUTF8で保存したら大丈だったよ! ただし、それでも引数で渡すとダメだったけどwww
576 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 20:57:33.36 ID:9HGwW/1Y.net] >>553 それも enabledelayedexpansion 使えば大丈夫じゃない? setlocal enabledelayedexpansion set A=%1 if !A! == "" echo 同じ もうやだこの言語(?)
577 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 21:14:31.85 ID:9HGwW/1Y.net] @echo off echo %1 call :LABEL %1 exit /b :LABEL echo %* ↓ > test.bat a a a これが普通 > test.bat ^^ call :LABEL exit /b ECHO は <OFF> です。 頭痛いけどなんとなく理解できる > test.bat "^" "^" "^^" なんで^増えてんだよwww
578 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 21:24:41.89 ID:9HGwW/1Y.net] @echo off setlocal enabledelayedexpansion echo %1 set A=%1 call :LABEL "%A%" call :LABEL !A! call :LABEL "!A!" exit /b :LABEL echo %1 > test.bat "^" "^" """" "^^" """" もう意味がわかんないw これ人間が制御できるものなんか?
579 名前:デフォルトの名無しさん mailto:sage [2019/11/10(日) 09:44:25.06 ID:fP398yW4.net] setlocal enabledelayedexpansion は >>540 対策で使えるけど、 それ以外はもっと制御が難しいかも・・・ 基本は通常のsetlocalで比較のときだけ 部分的に使ったほうが良さそう 今回は頑張ったけど、もうやらない。
580 名前:デフォルトの名無しさん mailto:sage [2019/11/10(日) 15:37:42.63 ID:noq81T2Q.net] スレ伸びてると思ったらほぼ ID:9HGwW/1Y だったでござる
581 名前:デフォルトの名無しさん mailto:sage [2019/11/10(日) 20:23:39.65 ID:u8+xJCBj.net] for in って for %%i in (*) みたいにワイルドカードが含まれていればファイルを検索する機能で for %%i in (a b c) みたいにワイルドカードが含まれてない場合は ファイルがあるなしに関係なく、a、b、cを繰り返す機能ってことであってますか?
582 名前:デフォルトの名無しさん mailto:sage [2019/11/14(木) 15:51:47.87 ID:MT98n7t2.net] 多重フォルダの中身を 一番上のフォルダにまとめるスクリプトってどうやるの? できればフォルダをドラッグ&ドロップしたいんだけど
583 名前:デフォルトの名無しさん mailto:sage [2019/11/14(木) 21:52:50.32 ID:ah6E9oLX.net] >>561 for /r %1 %%i in (*) do move "%%i" \
584 名前:デフォルトの名無しさん mailto:sage [2019/11/18(月) 20:56:52.03 ID:/+k2TWLn.net] なんかこんなバッチファイルがあったけどうまく動かない for /f "usebackq tokens=1" %%A in (`tasklist /fi "imagename eq SKRWATCH*" /fo "table" /nh`) do if "SKRWATCH.EXE"=="%%A" (echo %%A & exit) else (START /D C:\Users\user1\Downloads\skrw021 SKRWATCH)
585 名前:デフォルトの名無しさん mailto:sage [2019/11/18(月) 21:18:40.00 ID:45qFz0UJ.net] >>563 うまく動かないでは状況が不明(エラーxxxが表示とか具体的に) ・tasklistは動くのか?(tasklist /?) ・そのままコピペしてるのなら動かなくて当然 (doの前に全角空白があるし、doの後も改行されてる 起動するパスがexeと空白で区切られてるがタイプミスか) ・対象はそのEXEで間違いないのか、パスに間違いはないか
586 名前:デフォルトの名無しさん mailto:sage [2019/11/18(月) 21:26:40.79 ID:45qFz0UJ.net] >起動するパスがexeと空白で区切られてるがタイプミスか これはフォルダ指定だから記述に問題はなかったね
587 名前:デフォルトの名無しさん mailto:sage [2019/11/19(火) 00:58:21.49 ID:f1OS2g5Q.net] >問題はなかったね 問題あるから動かねーんだろwwバカじゃね? いきなりバッチじゃなくてプロンプトでコマンドひとつひとつ動作するか確認してみろやボケ
588 名前:デフォルトの名無しさん mailto:sage [2019/11/19(火) 03:01:51 ID:DFw2Dz+B.net] pause & exit コンソール入力で起動なら exit/b
589 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 12:24:50.17 ID:2S7bcPNj.net] テキストファイルの[version]ってタグの上に任意の文字列を追記したいんですけどなにかいい方法ありませんかね? ↓なイメージです key = value [version]
590 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 13:04:27.56 ID:Tu0gcZfO.net] batじゃしらんけどperlかawk使えるスクリプトのほうが簡単だと思う
591 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 13:53:46.39 ID:xBPN5HFi.net] エディタでの置換じゃ無理な処理数なん? batで文字列操作は事故の元 JSかP
592 名前:Sでも使えば? [] [ここ壊れてます]
593 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 17:43:27.76 ID:jZ8vbKIX.net] >>569 >>570 やりたいことはローカルセキュリティーポリシーテンプレートを書き換えたいんですよ seceditってコマンド使うんですけどその書き換えの部分を自動化したいんです 因みにPSでは使えないです
594 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 19:20:58.96 ID:Tu0gcZfO.net] これでいけないかな https://qiita.com/kurukurupapa@github/items/f4439fd5c33f6ebfec62
595 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 19:53:19.75 ID:p2TBD6cq.net] 一行ずつぐるぐる回しながら表示して [version]だったら、その表示の前に追加すればいいだけじゃん
596 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 09:08:09.78 ID:YDFq+t9K.net] いいやPS使ってもらう
597 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 10:25:48.48 ID:Wg+WlOX1.net] ファイルを一行ずつ読み込んで出力する処理に ちょこっと手を加えるだけだから簡単だな
598 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 11:16:31.45 ID:LvODftpp.net] 簡単だったら早く教えろよな キレちゃうぞこのやろう
599 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 11:47:37.77 ID:xinrmZtD.net] PSで簡単にできたからもういいわ
600 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 12:46:53.45 ID:7xPdmDWo.net] >>572 行頭が数字なのにeolの指示は無意味 delimsを数字にしないとまずいし 他人のバッチを鵜呑みにして理解していないバッチ
601 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 15:03:03.19 ID:8WRatKwZ.net] EUCテキストだから、ファイル名をそのままfindstrに突っ込むのは無理だな
602 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 16:04:24.91 ID:7xPdmDWo.net] >>579 これでどうかな? @echo off chcp 20932 set s="%~1" set "a=key = value" set "b=[version]" call :x > "%~2" goto :eof :x for /f "delims=" %%i in ('findstr /n "^" %s%') do ( set c=%%i setlocal enabledelayedexpansion set d=!c:*:=! if /i !d!==!b! echo.!a! echo.!d! endlocal)
603 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 16:15:57.27 ID:7xPdmDWo.net] >>580 を実行前は chcp 932
604 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 20:46:01.60 ID:8WRatKwZ.net] EUCじゃなくてUnicode(UTF16)だった
605 名前:デフォルトの名無しさん [2019/11/21(木) 22:34:33.13 ID:2C4HvUZs.net] コード変換ソフトがないと、無理かな。
606 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 22:42:46.40 ID:8WRatKwZ.net] いやfindstrにファイル名渡さないようにすればそれでいい 'type %s%^|findstr /n ^^' cmd /u /c hoge.bat in.txt out.txt
607 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 22:47:11.20 ID:8WRatKwZ.net] ^^じゃダメだった ^^^^か"^"だね
608 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 23:14:31.55 ID:t93OqxgW.net] >>568 Ruby で作った text = <<"EOT" [version] a [version] EOT re = /^\[version\]$/ text.gsub!( re ) { |matched| "key = value\n#{ matched }" } # 置換 puts text 出力 key = value [version] a key = value [version]
609 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 23:21:01.84 ID:8WRatKwZ.net] ただBOMが付かないね BOMが無いと使えないかどうかは怖いので試してない
610 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 00:14:32.18 ID:UfmR8W/F.net] >>587 @echo off & if "%~1"==":x" goto x set "a=key = value" & set "b=[version]" & set s="%~1" chcp 65000 > nul cmd/u/c "set/p a=+/v8-<nul"> "%~2" chcp 932 > nul cmd/u/c "%~0" :x >> "%~2" & goto :eof :x for /f "delims=" %%i in ('type %s% ^| findstr/n/r .*') do (set c=%%i setlocal enabledelayedexpansion set d=!c:*:=!& if /i !d!==!b! echo.!a! echo.!d! endlocal)
611 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 00:20:53.00 ID:UfmR8W/F.net] >>588 あらかじめbom付き空テキスト用意しておけば もっと簡単なバッチになるけどね
612 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 02:00:26 ID:iZoP+Nd2.net] FINDSTR: // は無視されました。 /n /rとするか、/nだけにするか
613 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 02:02:44 ID:iZoP+Nd2.net] /nrで良いか
614 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 02:47:17 ID:UfmR8W/F.net] そうだ
615 名前:な。直ぐ消えるので気付かなかった 動作はするようだが スペース入れた方が無難だね [] [ここ壊れてます]
616 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 08:47:38.56 ID:wKGQ5j7v.net] rubyきちがいきてるね
617 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 09:49:43.81 ID:VuiommTl.net] 無視無視
618 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 12:09:43.22 ID:f2CG40En.net] point of no return
619 名前:デフォルトの名無しさん mailto:sage [2019/11/23(土) 16:13:10.37 ID:x4sN5Hm0.net] 質問した人は登場しないね ひょっとして>>577 が最後?
620 名前:デフォルトの名無しさん mailto:sage [2019/11/23(土) 16:50:58.80 ID:xep2e/TT.net] awkが手軽で楽そうだがユニコードできたっけ?
621 名前:デフォルトの名無しさん mailto:sage [2019/11/25(月) 13:59:48.96 ID:6F6igyhI.net] WindowsならPSで良いだろ 文字コードもドトネトで扱える範囲で指定できるし
622 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 10:19:19 ID:NW9y+uW0.net] 用途:エクセルにある複数の画像URLを、指定したフォルダにDLさせたい コマンドでやりたい理由: ダウンロードソフトは一つのフォルダに全部DLするか、 一つのURLを開いてから一つづつDL先を指定するか、 URLをフォルダ構造に分解して保存するからDL後探すのが面倒で嫌 DownloadThemALLとか、DL雨とか、Tab Saveとか、Image Downloader… 全部ダメ; bitsadmin /transfer [name] [URL][DL path] bitsadmin /transfer [name] [URL][DL path] bitsadmin /transfer [name] [URL][DL path] …こんな風に並べて書いたところ、リストの最後らへんの二つぐらいを除いて PRIORITY:NORMAL FILES:1/1 BYTES:0/0 (0%) Transfer complete. でDL開始する前に次の行にいってしまうようです。しかも0バイトの指定したファイルを作ってしまいますw MS見ると複数やるなら1行に続けろとあるので bitsadmin /transfer [name] [URL] [DL path] [name2] [URL2][DL path2] としたが状況変わらず。 どうしたらいいでしょうか。timeoutでは変わりませんでした。
623 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 10:20:48 ID:NW9y+uW0.net] >並べて書いた batファイルにしてからダブクリのため
624 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 12:23:55 ID:ImxGWCjG.net] httpのみでhttps未対応だしリファラやUA見られてても落ちないと思う ダウンローダーはその辺勝手にやってくれてるんだよ 取り敢えずこれ真似してforでlist読んでやってみれば? ttps://automationlabo.com/wat/?p=570
625 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 12:32:29.83 ID:NW9y+uW0.net] >>601 ありがとう、そこのサイトみてやってるんだ ちなみに今はHTTPS対応してるようで ttps://maku77.github.io/windows/cmd/download.html ttps://qiita.com/uratatsu/items/d77152ca121d0b779464 一件づつコピペだったらできるんだ ダウンローダーについては気軽にスレで聞いてるけど、 画像ごとにフォルダを指定して一気に保存ができるものはないみたい 昔懐かしいirvineができる的な噂見てやってみたけど、フォルダ指定ができないorz
626 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 13:46:11 ID:ISv3uuWx.net] しらんけど 前の行の処理が完了する前に次の物が始まるのがまずいなら Call でいんじゃないの?
627 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:15:56.61 ID:ImxGWCjG.net] call または start "" /wait コマンド
628 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:16:12.39 ID:JyI6kWkc.net] 特定に箇所にダウンロードして、ダウンロードが終わったら移動するんじゃダメなの? なんでダウンロードするアプリにフォルダ指定の機能まで期待するんだろう 頭硬いのかな
629 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:22:21.16 ID:Rh/VLF1h.net] bitsadmin の代わりに cURL を試してみては
630 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:40:23.78 ID:jwtMC5+Q
] [ここ壊れてます]
631 名前:.net mailto: >>599 ジョブにaddfile/addfilesetオプションでurl追加すればできるみたいだけど [] [ここ壊れてます]
632 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:41:21.48 ID:ISv3uuWx.net] たしかにそれぞれのファイルのフォルダ指定をすること自体がめんどくさそう ダウンロードフォルダにその人が望む各保存先フォルダのショートカットおいてまとめて突っ込む方が楽そう
633 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:51:14 ID:NW9y+uW0.net] pushd %~dp0 for /f "tokens=1-3" %%A in (list.txt) do ( bitsadmin /TRANSFER FILEDOWNLOAD %%B %~dp0\%%A\%%C ) echo listの内容 [dir] [url] [ファイル名] ダメでした…%%Aで留めれば行けるけど、他のフォルダにいれたいやつを上書きしちゃう curl…Linuxコマンドだと思ってスルーしていたけど調べてみます。thx >>605 100も200もあるURLごとのフォルダからぽちぽち移動できるもんならやればいいよ DownloadThemALLとか、古いFirefoxでしか動かんけどScrapbookとか、あなたが 言うような奴ならごまんとある。 私はそれはやってられんから他の方法探してます。 hogehoge.jp/moemoechan/hogenull/img/image/hoge-hoge-hoge-hoget.jpg というURLをそのままフォルダにされても、今回の場合は探し出すのが大変なんだよ、 ファイルに行くまでに何回クリックいる?×100だよやりたいならどうぞ私は嫌ですw (単なるスクラップならせいぜい1サイトくらいだからむしろそれでいい) つか、あなたのそのやり方やるぐらいなら、URLのリストをいっこづつコピペで 開いてブラウザから保存したいフォルダにD&Dしたほうが何十倍も速いぞたぶん。 だってDLしたあとで探す手間いらないですよね?
634 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:55:31 ID:JyI6kWkc.net] >>609 >だってDLしたあとで探す手間いらないですよね? なにを探すの? 空のディレクトリに一個だけダウンロードしたらmoveするだけじゃん しかもダウンロードするファイル名分かってるんだろ? まとめてダウンロードしてからでも人間が探す必要なんかないじゃん ダウンロードディレクトリにあるんだから 脳みそ足りて無くない?
635 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:59:19 ID:NW9y+uW0.net] >>607 !! 調べてみます! まあそりゃねぇ 管理ナンバー URLっていう100個のリストにある画像集める必要があって 素直にそのURLをブラウザで開いてD&Dもしてましたよ…けど開いてる時間すら 面倒になってきまして… ダウンローダーいろいろ探したけど、ブラウザのダウンロードフォルダ固定とか ダウンロードする画像ごとにフォルダ指定しろダイアログとか、そーじゃねーよとw もうそのいちいちダイアログがうぜえwでも振り分けずぜんぶいっしょくたも困る。 で、GoogleスプレッドでIMPORTXMLで画像リスト出していまここって感じ。 599の状態でビャーってなればよかったのだが。(もっといい方法あったらそっちがいいけど!)
636 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:05:17 ID:NW9y+uW0.net] >>610 これが見えないですか。そうですか。 >hogehoge.jp/moemoechan/hogenull/img/image/hoge-hoge-hoge-hoget.jpg >というURLをそのままフォルダにされても、今回の場合は探し出すのが大変なんだよ、 元々は 123 hogehoge.jp/moemoechan/hogenull/tio/hoge-hoge-hoge-hoget.html 124 hogehoge.jp/moemoechan/hogenull/star/hoge-hoge-hoge-hoget.html 125 hogehoge.jp/moemoechan/hogenull/maru/s/hoge-hoge-hoge-hoget.html 126 hogehoge.jp/moemoechan/hogenull/otto/s/hoge-hoge-hoge-hoget.html というエクセルのファイルにある各URLのにある画像をそれぞれ分けたい、ということ。 ちなみにこれ4つだからぽちぽちやってもいいんだけどさ…100行あるとしたらどう?w
637 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:25:21 ID:XdTMGSyO.net] batで外部プログラムの実行完了まで待つ呼び出し方法は start /wait って上で誰かが言ってるだろ
638 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:33:34 ID:ISv3uuWx.net] ツリー上に保存しなけりゃいいし ダウンロードフォルダのルートで
639 名前:*でサブフォルダ含めて検索してもすぐまとめて表示されるしなあ [] [ここ壊れてます]
640 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:49:02.22 ID:NW9y+uW0.net] ツリーに保存しないとダメだからそうしてるんだけど。 この管理番号の画像これですよーと明示できなければならないからリストがあるわけで。 必ず4つ、必ず5つならDL時即時リネーム連番にしてもいいけど…3しかなかったり6あったりする それを検索するにしても画像リストと照合しながら?工程増えすぎ。元の手順より面倒になってもw waitはダメでした。 trancefar 〜 wait trancefar ~ は使い方間違ってますか? trancefar 〜複数URL wait もだめでした…
641 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:54:58.38 ID:SASMXjiT.net] start "" /wait bitsadmin でしょ