回答ありがとうございます。しかし、変数に保存されているDOWNLOAD-URLを分割したい。そして、FTP アドレスでもスクリプトを実行したいと言うのを忘れていました。しかし、あなたの答えとウェブでのさらなる研究の助けを借りて、私は自分の解決策を見つけました。
@echo off
setlocal EnableExtensions
setlocal EnableDelayedExpansion
mode con:cols=120 lines=32 && color 3E
title Example for splitting Download-URL into URL and Filename
cls
set _BASEURL=ftp://ftp.rarlab.com/rar/
set _WRx32=http://www.rarlab.com/rar/wrar v4.20.exe
set _WRx64=http:\/www.rarlab.com\rar files/winrar-x64-420.exe
set _WRLNG=rarlng.rar
:SPLIT
set COUNT=0
echo:_BASEURL = %_BASEURL%
echo:_WRx32 = %_WRx32%
echo:_WRx64 = %_WRx64%
echo:_WRLNG = %_WRLNG%
echo:_____________________________________________________________________________
For %%A in ("%_BASEURL%", "%_WRx32%", "%_WRx64%", "%_WRLNG%") do (
set Folder=
set Name=
set /A COUNT+=1
if not %%~xA.==. (
set "_vartmp=%%~A" ) else (
set "_vartmp=%%~A\NO_FILE.EXT" )
for %%B in ("Z:\!_vartmp!") do set "FILE!COUNT!=%%~nxB"
for %%B in ("Z:\!_vartmp!") do set "_VAR=%%~dpB"
set "_VAR=!_VAR:Z:\=!"
if not $!_VAR!==$ (
set "_VAR=!_VAR::\=:\\!"
set "URL!COUNT!=!_VAR:~0,-1!" ) else (
set "URL!COUNT!=NO_URL" )
)
set _BASEURL=%URL1%
set COUNT=0
:LOOPOUT
set /A COUNT+=1
if not defined URL%COUNT% exit /b 1
if !URL%COUNT%!==NO_URL set "URL!COUNT!=%_BASEURL%"
echo URL%COUNT%: !URL%COUNT%!\ --- FILE%COUNT%: !FILE%COUNT%!
goto LOOPOUT
SETLOCAL DisableDelayedExpansion
goto :EOF
最初にダウンロード URL を変数に保存してから、出力します。ここで、リンクを URL とファイル名に分割します。次に、URL とファイル名を動的変数に保存します (URL + 連続番号と FILE + 同じ連続番号)。ご覧のとおり、変数 "_WRLNG" の URL がないため、URL の代わりに文字列 "NO_URL" が保存されます。また、変数「_BASEURL」のリンクにはファイル名がないため、代わりに文字列「DUMMY.EXT」が保存されます。これは、URL+Nr/FILE+Nr 変数が空または欠落しないようにし、正しい 1:1 の相関関係を取得するために実行する必要があります。
分割は、最初に (仮想) ドライブ文字 (「Z:\」) を追加し、後でそれをダウンロード URL との間で削除することによって行われるため、「パラメータ拡張」を使用できます。"~dp" を使用すると、コマンド プロセッサはすべてのスラッシュをバックスラッシュに変更しますが、二重のスラッシュ/バックスラッシュも削除するため、"http:\" または "ftp:\" の後の 2 番目のバックスラッシュを再度追加する必要があります (":\" を":\"
URL1に保存された URL は、変数 "_BASEURL" に割り当てられます (他の URL を使用できます。INI ファイルから変数を読み取り、このスクリプトを使用して _BASEURL の表記を修正するため、これは単なる例です)。 、ユーザーがバックスラッシュの代わりにスラッシュを使用する場合。)変数「_BBASEURL」が使用されます(ここでは出力のみ)。ここでは、URL なしでファイル名だけが保存されます。
ラインで
echo URL%COUNT%: !URL%COUNT%!\ --- FILE%COUNT%: !FILE%COUNT%!
"..\" と "---..." の間には 1 つのスペースと 2 つのタビュレーターがあります。TAB を挿入するには、Windows のメモ帳で (テンキーで) ALT+009 を使用しました (保存する前の最後のステップ)。これを行うと、出力はタブ区切りのリストとして表示されます。
説明が半分理解できることを願っています。