【.cmd】 バッチファイルスクリプト %13 【.bat】
■ このスレッドは過去ログ倉庫に格納されています
>>588
あらかじめbom付き空テキスト用意しておけば
もっと簡単なバッチになるけどね FINDSTR: // は無視されました。
/n /rとするか、/nだけにするか そうだな。直ぐ消えるので気付かなかった
動作はするようだが
スペース入れた方が無難だね 質問した人は登場しないね
ひょっとして>>577が最後? WindowsならPSで良いだろ
文字コードもドトネトで扱える範囲で指定できるし 用途:エクセルにある複数の画像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では変わりませんでした。 >並べて書いた
batファイルにしてからダブクリのため httpのみでhttps未対応だしリファラやUA見られてても落ちないと思う
ダウンローダーはその辺勝手にやってくれてるんだよ
取り敢えずこれ真似してforでlist読んでやってみれば?
ttps://automationlabo.com/wat/?p=570 >>601
ありがとう、そこのサイトみてやってるんだ
ちなみに今はHTTPS対応してるようで
ttps://maku77.github.io/windows/cmd/download.html
ttps://qiita.com/uratatsu/items/d77152ca121d0b779464
一件づつコピペだったらできるんだ
ダウンローダーについては気軽にスレで聞いてるけど、
画像ごとにフォルダを指定して一気に保存ができるものはないみたい
昔懐かしいirvineができる的な噂見てやってみたけど、フォルダ指定ができないorz しらんけど
前の行の処理が完了する前に次の物が始まるのがまずいなら
Call でいんじゃないの? call または start "" /wait コマンド 特定に箇所にダウンロードして、ダウンロードが終わったら移動するんじゃダメなの?
なんでダウンロードするアプリにフォルダ指定の機能まで期待するんだろう
頭硬いのかな bitsadmin の代わりに cURL を試してみては >>599
ジョブにaddfile/addfilesetオプションでurl追加すればできるみたいだけど たしかにそれぞれのファイルのフォルダ指定をすること自体がめんどくさそう
ダウンロードフォルダにその人が望む各保存先フォルダのショートカットおいてまとめて突っ込む方が楽そう 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したあとで探す手間いらないですよね? >>609
>だってDLしたあとで探す手間いらないですよね?
なにを探すの?
空のディレクトリに一個だけダウンロードしたらmoveするだけじゃん
しかもダウンロードするファイル名分かってるんだろ?
まとめてダウンロードしてからでも人間が探す必要なんかないじゃん
ダウンロードディレクトリにあるんだから
脳みそ足りて無くない? >>607
!!
調べてみます!
まあそりゃねぇ
管理ナンバー URLっていう100個のリストにある画像集める必要があって
素直にそのURLをブラウザで開いてD&Dもしてましたよ…けど開いてる時間すら
面倒になってきまして…
ダウンローダーいろいろ探したけど、ブラウザのダウンロードフォルダ固定とか
ダウンロードする画像ごとにフォルダ指定しろダイアログとか、そーじゃねーよとw
もうそのいちいちダイアログがうぜえwでも振り分けずぜんぶいっしょくたも困る。
で、GoogleスプレッドでIMPORTXMLで画像リスト出していまここって感じ。
599の状態でビャーってなればよかったのだが。(もっといい方法あったらそっちがいいけど!) >>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 batで外部プログラムの実行完了まで待つ呼び出し方法は
start /wait
って上で誰かが言ってるだろ ツリー上に保存しなけりゃいいし
ダウンロードフォルダのルートで*でサブフォルダ含めて検索してもすぐまとめて表示されるしなあ ツリーに保存しないとダメだからそうしてるんだけど。
この管理番号の画像これですよーと明示できなければならないからリストがあるわけで。
必ず4つ、必ず5つならDL時即時リネーム連番にしてもいいけど…3しかなかったり6あったりする
それを検索するにしても画像リストと照合しながら?工程増えすぎ。元の手順より面倒になってもw
waitはダメでした。
trancefar 〜
wait
trancefar ~
は使い方間違ってますか?
trancefar 〜複数URL
wait
もだめでした… start "" /wait bitsadmin
でしょ いちいち一個ずつ保存先指定するより楽だよ
検索っていっても保存先フォルダことにダウンロードすれば*でやりゃいい とにかくダウンロードが正常に終わるようにならないと先に進めないだろ
ダウンロード時にフォルダが決まるならそれで問題解決だし
外部ダウンローダを使うのなら、落としたファイルとurlとの対応が取れるのかが問題
それが可能(例えばファイル名が行番号になってるとか)なら
落とした後にファイルを対応するフォルダに移動すればいい
もちろんbat等の自動化で start "" /wait bitsadmin /TRANSFER FILEDOWNLOAD %%B %~dp0\%%A\%%C
urlに&とか%は無いの? >>617
それ、ブラウザでURL開いて、保存先フォルダ開いてD&Dのほうが早いよ?
今時のブラウザ、コピペと同時に開くんだから。
>>618
それな;
>>616
!
そういう使い方になるのか!ありがとうございます!
でも空ファイルだったw
Dirとmdで生きてるのでもう脳みそ煮えてますわ… >>619
ある。%20とか?とか。
ttps://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12345.jpg?123456
ttps://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12346jpg?1234
こんな感じ。
bitsadmin~を一つだけ書いた場合はちゃんと動作するから大丈夫な・・・
えっ??まさか%% >>623
一般的なダウンローダなら、urlの末尾がファイル名になるが
名前の重複も多く起き、その場合、ダウンローダは自動的にリネームする
aaa.jpg, aaa(1).jpgのように
しかも(1)が付くのは早くダウンロードが終わったものでリストの上から順というわけでもない
これとリストにあるurlとの対応をとるのは大変だと思わん? >>624
結局一つずつダウンロードする必要があるだろ?
やっぱり何を探せなないのが全くわからんなぁ >>622
その方が早いと言ってます。どっちが早いか試してみたら?
https://www.yahoo.co.jp/ ロゴとその左右のアイコン
https://www.rakuten.co.jp/ ロゴから購入履歴までのアイコン
https://www.nikkei.com/ ロゴと、その下の写真3つ
DL先のフォルダ開く、URLひらく、D&D 3工程
URLをまとめてダウンローダーに入れる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、該当のファイルを検索する D&D 5工程
フォルダごとにURLをダウンローダーにいれる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、D&D 4工程 >>621
詰み
&なら "%%~B" とすれば行けたかもだけど
バッチで%〜%のエスケープは出来なくないもののかなり面倒くさい
powershellとか行った方がいい
どうせ自動化するのなら>>612の元listから抽出してDLする方法をPSスレとかで相談してみれば? で、私はその3工程ですらめんどくっせーってなって、3工程とも省けんかなと考えた
#今後も同じ作業あるから、今なんとかできてると今後が楽。
ダウンローダーのダウンロード先の問題って、こうなるんだよね
tp://imepic.jp/20191126/620210
ふ、ふかい。(これはFirefoxアドオンのスクラップブック。DownloadAllThemもこういう感じ)
お気に入りのサイト見るだけならアドオンからわかるんだけど、画像を取り出すとなると
エクスプローラーに行く必要がある >>627
エクセルに入れてるってんだから
まとめてURL処理してるんでしょ
D&Dをファイル数分しなくちゃならんのを言ってるんだが
まとめてURL処理してるならD&Dは1回でいい >>628
うへwわろすwそういうことか!
Powershellはこっち以上に全くわからんな…
画像リストはGoogleスプレッドにぶんなげて作れてはいる
ありがとう 0バイトになるのは書き込み権限とか
管理者で実行しても変わらない? >>632
transfarされる前に次にいっちゃって、でもファイル作れって言ってるから空のファイルつくりましたって感じに見える
transfar実行画面のBYTE:0/0のところが、いっこづつやったときはにゅーーーって動いてファイル捕れるんですが
ここが0/0のままで次を始めてしまう
Wait入れようが、Pauseいれようが、そこは同じですね >>631
エスケープさせてできました!!
コマンド自体もスプレッドシートに関数くんでやってるので、どこかの時点で%
を置き換えてやることにします。
ヒントありがとうございました。
みなさまもたくさんヒントありがとうございました。 >>634
""で括ってやれば?
ダメならちょっと上のsetlocal enabledelayedexpansionを参考に
pushd %~dp0
for /f "tokens=1-3" %%A in (li.txt) do (
if not exist "%~dp0\%%A\." mkdir "%~dp0\%%A"
start "" /wait bitsadmin /TRANSFER FILEDOWNLOAD "%%B" "%~dp0\%%A\%%C"
) >>636
こわいよw
もはや逃げることはできぬぞ、か。 トレンドに#業務ハックというのが上がってた。フーン
ここにいるわるいオジサン達は徹底的に省力化して、あとは仕事するフリして過ごすようなことは
まさかしていませんよね? 無理そうな気はしつつも質問
苗字<tab>名前<tab>年齢<tab>住所
田中<tab>太郎<tab>27<tab>大阪
山田<tab>花子<tab><tab>東京
佐藤<tab><tab>35<tab>
こんな表のテキストファイルを<tab>を区切り文字として列指定して読み込みたいんだけど
tokens=2,4
にしても連続した<tab>は一括りに扱われて山田と佐藤は対象の列がずれちゃうよね
これはもうvbsやVBAじゃないと無理ぽかな 半角スペースは文字列として扱いたいから<tab>だけを指定してるけどダメよー >>639
tabの間にスペースを入れてみた。
これは前処理なので、あとはお好きにどうぞ
@echo off
set "t=<tab>"
call :x > test2.txt
pause & goto :eof
:x
for /f "delims=" %%i in (test1.txt) do ( set a=%%i
setlocal enabledelayedexpansion
set a=!a:%t%%t%=%t% %t%!
set a=!a:%t%%t%=%t% %t%!
echo.!a!
endlocal)
<tab>にはタブを入力 おお、値の無い列には半角スペースを入れてしまうわけか
こりゃ気付かんかったサンクス バッチでフォルダの表示方法とかかえられないよ?
詳細にして 表示の種類に長さとか大きさとか
いれたいんだけど
それをワンクリックでやりたい
https://i-bitzedge.com/wp-content/uploads/2016/03/Search-Contextual-tab-Windows-10.jpg
名前とか日付のとこに 長さとか大きさを追加するってことね >>645
レジストリ値弄れば出来たと思う。
昔職場の環境統一するのに使ってた。
詳細はRegshotとかで差分とって。
バッチからはRegコマンドで設定するかRegEdit /s で読み込むかのどちらか。 >>645
設定後にShellの再起動も必要だったかも。 >>646-647
レジストリか
なるほど
ちょっと色々調べてみます こういうの実行するとサブフォルダのファイルでは空行ではなくピリオドが出力されるんですが何故ですか?
まあ実用上の問題は無いんですが
@echo off
for /r %%i in (*.*) do (
echo "%%~nxi"
echo.
)
pause ピリオドとかコロンじゃなくて、カンマとかセミコロン使えばいいよ イコールもお仲間で、この3つが特別区切り記号らしいよ >>650
はい、カンマを使うと問題が起きないことは確認していたのですがピリオドだと何故こうなるのか気になりました /rが悪さをしてるんじゃね
サブフォルダの中でピリオドを2個にして startコマンドでAPを起動後、「F11」をバッチファイルから入力するには、どう記述すればいいのでしょうか? echo class Program{static void Main(){System.Windows.Forms.SendKeys.SendWait("{F11}");}}>temp.cs
FOR /F %%i IN ('dir /b /s %WINDIR%\Microsoft.NET\Framework\csc.exe') DO set cscexe=%%i
%cscexe% temp.cs
temp.exe %1がフォルダ名の場合、サイズを示す%~z1は0以外の数字になる
何を表しているのか不明 エントリーレコードのsizeじゃね?テキトーmaybe >>662
そんな数字が多いですね
\windows\winsxs や * だと違う表示も出るので意味不明、バグなのか for の %~tI のみたいに簡単にディレクトリの作成日時を取得する方法教えてください
dir /tc 何か | findstr findstr /e /c:"<DIR> ."
みたいにして取り出して整形するのは何か間違えている気がしてならないので %~t1 とかで出てくるのは更新日時じゃなかった?
作成日時ならそれでいんじゃね?
for /f "skip=3 tokens=1-3,5,6 delims=/: " %a in ('dir /tc %windir%') do (
echo %a%b%c%d%e
goto :LOOPOUT
)
:LOOPOUT
pause
日時はシステム依存で表示形式変わるので整形したい形に適宜tokensやdelims、echoのとこ弄るといい
何に利用するのか知らないけど powershell なら秒まで取得出来るしバッチより痒いところに手が届く 修正
%a→%%a
echo %%a%%b%%c%%d%%e ありがとうございます
何か一発でディレクトリ作成日時を取り出すなら PowerShell 使おう、
って話になるんですね、ミリ秒単位までいけるみたいですし forfiles でフォルダの更新日時も得られる、ただしファイルが多いと遅い
forfiles /M ファイル名 /C "cmd /c echo @fname @fdate @ftime"
dirだと得られない秒もOK、仕様がばらばら、バッチは不思議 気まぐれに試してみたらskip=2と3の結果が同じでskip=4だった
ifでちゃんと絞った方が良さげ
for /f "tokens=1,3,4* delims= " %a in ('dir /ad /tc %windir%') do @if "%d"=="." @echo %a %b dir ?
親DIRがピリオド2文字なのに
なぜ表示されるのか . と .. はディレクトリ作成時に同時に作成されルート以外の全ディレクトリに存在する特殊な .link のようなモノ
だから .. の(作成|更新)日時は自ディレクトリと同じ
.. は親ディレクトリを指し示すが親ディレクトリとは別のモノ
なぜと問われても、そういう仕様だから、としか >>671
ピリオドは区切り文字であり、
ワイルドカードの?の文字数のカウントに含まれず。
ピリオドが先頭だと、最初のトークンは空文字列となり、
?は一文字以下の文字列を表すので、それに合致するわけかな。
ちなみに >>670 はそれより前のレスとは無関係 先頭にドットがあると要注意だよな
ワイルドカードがドットを無視する場合があるから
>copy nul .txt
>copy nul txt
>dir/b
.txt
txt
>del txt*
>dir
ファイルが見つかりません 簡単な処理だからbatでいいかと思って書き始めたら思ったより複雑になって、なんでbatで書いちゃったんだろってなるのいい加減やめたい @echo off
for /L %%a in (1,1,666) do set /a a+=%%a
for /L %%a in (2,2,666) do set /a a+=%%a
echo %a%
pause
for /L で遊んでたらなんか凄いの見付けた ドラッグ&ドロップ したファイル名を表示させようと思ってんだけど
win10です
テスト.bat
-----------------------
@echo off
for %%f in (%*) do (
echo %%f
)
pause
--------------------------
だとドラッグドロップしても画面が速攻消えてうまく起動しないんだけど(
ちなみに
@echo off
echo %1
pause
だけだとちゃんとフルパスで表示されます
%%と%の違いってなんですか? 引数が最低1つ以上の場合
:LOOP
echo "%~nx1"
shift
if not "%~1"=="" goto :LOOP
pause
引数が0個の可能性がある場合
:LOOP
if "%~1"=="" pause &exit /b
echo "%~nx1"
shift
goto :LOOP >>679
その方法だとファイル名やPathに&とか全角spとかダメ文字含む+半角spが無くて
引数がクオートされていない場合に上手く行かない
がこの場合引数欠けるだけだと思うので落ちるのは文字コード(ShiftJIS)と改行コード(CR+LF)を確認 >>680
あー>>680のやり方の方がいいわせか
>>682
できましたありがとう >あー>>680のやり方の方がいいわせか
そうじゃない。いいも悪いもない。こういう方法もあるよと提示しただけ
バッチはどうやってもバグを内包する。極論動けば何でもいい
バグを発生させないよう限定された条件の元で利用するかバグ避けコードを書くかになる
そういったのを理解した上で簡単な事をやるくらいならいいけど
少し複雑な事をしようとすると確実にあちらを立てればこちらが立たずで行き詰まったり面倒な事になる
面倒を避けたいなら初めからPowerShellとかでやった方がいい
今から覚えるなら尚更 >>679
ドラッグ&ドロップ したファイル名に
たぶん ) があるんだろう
a(1).txt
とかね
なぜ落ちるか自分で考えてみろ >>686
それな
バッチはこういう罠があるからPSに移行したわ
コメント欄に迂闊に括弧も使えないしこわいこわい ■ このスレッドは過去ログ倉庫に格納されています