|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Копирование части текста |
|
CMD/BAT - Копирование части текста
|
Новый участник Сообщения: 49 |
Профиль | Отправить PM | Цитировать Доброго время суток.
Помогите с написанием скрипта. Есть текстовый файл index.txt Содержание файла index.txt </ul><br/><b>Скачать с сервера:</b><br/><ul><li><a href="http://aimp.su/storage/1ebc54f4e0ab861183fc4708934d8b79/aimp_4.13.1887.exe">AIMP.RU</a></li><li><a href="http://files.programki.net/aimp/1ebc54f4e0ab861183fc4708934d8b79/aimp_4.13.1887.exe">Programki.net</a></li><li><a href="https://yadi.sk/d/GezDlNUi3EDmTy">Yandex Disk</a></li><li><a href="https://drive.google.com/file/d/0B5rovoA-boWkR0NnM21lWktjU0k/view?usp=sharing">Google Drive</a></li><li><a href="http://www.programosy.pl/program,aimp.html">Programosy.pl</a></li></ul><a href="http://trusted.kaspersky.com/1EBC54F4E0AB861183FC4708934D8B79/AIM2514/info" target="_blank"> Содержание файла Downloads.cmd Эта часть 1ebc54f4e0ab861183fc4708934d8b79/aimp_4.13.1887.exe сылки возможно постоянно меняется с выходом новой версии. После изменения файла Downloads.cmd запустить его, а после окончания работы файла Downloads.cmd вернуть его в прежнее состояние. |
|
Отправлено: 10:41, 26-03-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата 41275jur:
|
|
Отправлено: 16:57, 16-04-2017 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать При помощи скрипта
Создался файл Imagine-Plugins, после переименовал в файл index.txt. Я понимаю что это сделано через одно место и не профессионально, но я пытался рассмотреть разные варианты. Я нашел в нете скрипт и подредактировал под скачивания с этого сайта @Echo off REM переключаемся на Windows - кодировку chcp 1251 >NUL Setlocal Enabledelayedexpansion rem Определяем наличие прокси. Бывает полезно, если ПК в домене. Set $X=&Set $R=HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings For /F "Tokens=1,3" %%i In ('REG Query "%$R%"^|Find "Proxy"') Do Set %%i=%%j If "%ProxyEnable%"=="0x1" Set $X=-x %ProxyServer% rem Перебор значений от 10 до 0 с шагом убывания 1 for /l %%a in (10,-1,0) do ( for /l %%b in (10,-1,0) do ( for /l %%c in (10,-1,0) do ( rem Если маркерная переменная не создана If Not Defined flg ( title Пытаемся скачать Imagine %%c.%%b.%%a_x64_Unicode Set fSURL=http://www.nyam.pe.kr/dev/imagine/download/x64/unicode/Imagine_%%c.%%b.%%a_x64_Unicode.zip rem Если файл существует, смотрим его свойства bin\curl.exe -f -s -I !fSURL! %$X%|Find " 200 OK" >Nul If ErrorLevel 0 ( rem Перебирая свойства файла, смотрим является ли он архивом zip For /F "Skip=1 Tokens=1* Delims=: " %%i In ('bin\curl.exe -f -s -I "!fSURL!" %$X%') Do Set %%i=%%j If /I "!Content-Type!"=="application/zip" ( Echo. Echo Выполняется скачивание Imagine %%c.%%b.%%a_Unicode.zip ... rem Процедура скачивания файла с прогресс-баром bin\curl.exe -f -# -O "!fSURL!" %$X% rem Завершаем перебор значений, создаём маркерную переменную set flg=1 )))))) Так как надо скачать еще и 12 Plugin, а прикрепить ссылки к этому скрипту не смог и совместить в один bat файл несколько таких скриптов не получилось, скачивается только одна ссылка. При помощи этого скрипта будут скачиваться файлы очень долго. Нашел на форуме Скрытый текст
@Echo Off
SetLocal EnableExtensions Set FN=input.txt For /F "Delims=" %%I In (%FN%) Do wget %%I При помощи wget из файла input.txt скачивается быстро, поэтому и возник этот вопрос - как напичкать input.txt ссылками. |
Отправлено: 20:34, 16-04-2017 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать 41275jur, понимаете, в чём дело… Пакетные файлы весьма слабо подходят для реализации данной задачи. В принципе.
Лучше всего будет PowerShell, в первую очередь — из-за обилия возможностей. Ну, вот, зачем: Цитата:
http://www.nyam.pe.kr/dev/imagine/download/x64/unicode/Imagine_1.0.9_x64_Unicode.zip http://www.nyam.pe.kr/dev/imagine/download/x64/setup/unicode/Imagine_1.0.9_x64_Unicode.exe Опишите, что именно Вы хотите получить. Не как, не каким путём, а что получить, зачем, и что планируется с полученным делать дальше. |
|
Отправлено: 01:03, 17-04-2017 | #13 |
Забанен Сообщения: 795
|
41275jur, помойму ты не в ту сторону смотришь. ЕЯПП, то вот что я делаю в таких случаях:
Фуррифокс + CustomButtons Кнопка "Взять все ссылки на странице" Скрытый текст
/* Code */ getUrls(); // --------------------------- Взять все Ссылки на странице ---------------------------------------------------------------- function getUrls() { var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.append("custombuttons"); file.append("urllist" + Math.random() + ".txt"); var win = document.commandDispatcher.focusedWindow, doc = win.document; var sel = doc, winSel = win.getSelection(); if(winSel.toString()){ sel = doc.createElement('div'); sel.appendChild(winSel.getRangeAt(0).cloneContents()); }; var str = '', links = sel.getElementsByTagName('a'); for(var i = 0, lnk; lnk = links[i]; i++) { if(lnk.href)str += lnk.href + '\r\n' }; gClipboard.write(getDomain()); foStream.init(file, 0x02|0x08|0x20, 0666, 0); foStream.write(str, str.length); foStream.close(); // можно просто сразу запустить файл с сылками в текстовом редакторе ОС по-умолчанию, блокноте напр. // тогда то шо ниже разделителя убрать\закомментировать. Запустится файл .txt // file.launch(); // ---------------- var filea = Services.dirsvc.get('ProfD', Ci.nsIFile); filea.initWithPath(filea.path + "\\SOFT\\AkelPad-my\\AkelPad.exe"); var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(filea); process.run(false, [file.path], 1); } Получилсо файл в АкелPad со всеми ссылками с страницы. Дальше сортируем (CTRL+A, ALT+P -> комманда плугина сортировать по-имени) и удаляем лишнее. Получили список: Скрытый текст
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_7Z_0.0.5.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_ALZ_0.0.4.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_Archive_0.0.6.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_DCRaw_0.0.6_GPL2.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_DCRaw_0.0.6_Source.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_HDPhoto_0.0.6.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_HV3_0.0.3.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_JBIG_0.0.3.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_JBIG_0.0.3_Source.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_JPEG2000_0.0.7.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_OpenEXR_0.0.1.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_RAR_0.0.4.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_SDK_1.0.8.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_WebP_0.0.8.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_7Z_x64_0.0.5.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_ALZ_x64_0.0.4.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_Archive_x64_0.0.6.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_DCRaw_x64_0.0.6_GPL2.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_HDPhoto_x64_0.0.6.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_HV3_x64_0.0.3.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_JBIG_x64_0.0.3.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_JPEG2000_x64_0.0.7.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_OpenEXR_x64_0.0.1.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_RAR_x64_0.0.4.zip http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_WebP_x64_0.0.8.zip http://www.nyam.pe.kr/dev/imagine/download/setup/unicode/Imagine_1.0.9.exe http://www.nyam.pe.kr/dev/imagine/download/setup/unicode/Imagine_1.0.9_Unicode.exe http://www.nyam.pe.kr/dev/imagine/download/unicode/Imagine_1.0.9.zip http://www.nyam.pe.kr/dev/imagine/download/unicode/Imagine_1.0.9_Unicode.zip http://www.nyam.pe.kr/dev/imagine/download/x64/setup/unicode/Imagine_1.0.9_x64_Unicode.exe http://www.nyam.pe.kr/dev/imagine/download/x64/unicode/Imagine_1.0.9_x64_Unicode.zip Качаем его через wget -i + Если часто нужно, то в АкелПад на панели сделана у мя еще одна кнопка, где прописан wget с путем и коммандами: "Загрузить этот список в WGET -i" Exec(`"%COMMANDER_PATH%\SOFT\Console\wget\wgetfile.cmd" "%f"`) Icon("%SYSTEMROOT%\System32\cmd.exe") Скрытый текст
@echo off @chcp 866 >nul @set urls=%1 rem set /P ref= укажи какой referer отправлять для сайта (обычно домен страницы): set /p ref=<%urls% for /f "delims=/ tokens=2" %%a in ("%ref%") do set ref=%%a echo ^ ------------------------------------------------------------------------- set /P fname=Имя папки если нужно: @set fname=%fname: =_% echo ^ ------------------------------------------------------------------------- rem взять дату заменить точки на подчеркивание, развернуть сначала год_месяц_день @for /f "delims=. tokens=1,2,3" %%i in ("%date%") do set d=%%k_%%j_%%i @set wgetdirWin=D:\WgetD\%d%\%fname% if not exist %wgetdirWin% md %wgetdirWin% @set wgetdir=/cygdrive/d/WgetD/%d%/%fname% @set ua="Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0" rem ------------------------------------------------------------------------- :DEFAULT echo %ref% >>%wgetdirWin%urllist.txt echo %url% >>%wgetdirWin%urllist.txt echo ^------------------------------------------------------------------------- >>%wgetdirWin%urllist.txt "%~dp0wget.exe" -cN --referer=%ref% -U % --content-disposition --no-use-server-timestamps --restrict-file-names=nocontrol,windows -P %wgetdir% -i %urls% if %ERRORLEVEL% equ 0 exit else pause exit exit Качаются списки, складываются в папку с датой и\или введенным именем. |
Отправлено: 03:42, 17-04-2017 | #14 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать Iska, хочу создать автоматическое обновление программ для внутренних ассоциаций в Total Commander.
Цитата Iska:
С распаковкой, копированием и т. д. я разобрался по мере своих возможностей, а вот со скачиванием - нет. Цитата Iska:
|
||
Отправлено: 06:51, 17-04-2017 | #15 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать ПопробЫвал разобраться с PowerShell и вот что получилось
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned Add-Type -AssemblyName System.Drawing $SiteAdress = "http://www.nyam.pe.kr/blog/entry/Imagine" $HttpContent = Invoke-WebRequest -URI $SiteAdress $HttpContent.Links | Foreach {$_.href } $HttpContent.Links | Out-File temp.txt Get-Content temp.txt | Select-String "Unicode.zip" | Out-File temp1.txt Remove-Item -Path "temp.txt" Get-Content temp1.txt | Select-String "outerHTML" | Out-File temp.txt Remove-Item -Path "temp1.txt" gc temp.txt | where {$_ -ne ""} > temp1.txt Remove-Item -Path "temp.txt" start 'wget.cmd' -Wait Remove-Item -Path "temp1.txt" @Echo Off %~dp0\bin\win_iconv -f UTF-16LE -t UTF-8 "temp1.txt" > "index.txt" for /f delims^=^"^ tokens^=2 %%i in (index.txt) do "%~dp0\bin\wget.exe" %%i Хотелось бы узнать такой вопрос:
|
Отправлено: 17:45, 17-04-2017 | #16 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата 41275jur:
Цитата 41275jur:
Цитата 41275jur:
Цитата 41275jur:
Цитата 41275jur:
|
|||||
Отправлено: 17:46, 17-04-2017 | #17 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Создал в %COMMANDER_PATH% папку update Структура папки Скрытый текст
\update\
|---AIMP.cmd |---AIMP_options | |---Profile | | |---AIMP-ContextMenu.ini | | |---AIMP.bak | | |---AIMP.ini | | |---CDDB.db | | |---EQPresetsLibrary.ini | | |---AudioLibrary | | | `---Local.db | | |---PLS | | `---Skins | | `---Blackd.acs3.ini | `---Skins | |---Barracuda.acs2 | `---Blackd.acs3 |---bin | |---curl.exe | |---libeay32.dll | |---libiconv2.dll | |---libintl3.dll | |---libssl32.dll | |---robocopy.exe | `---wget.exe |---Downloads |---manifest | |---wget-1.11.4-1-dep.mft | `---wget-1.11.4-1-dep.ver `---share `---locale `---ru `---LC_MESSAGES `---wget.mo Написал скрипт AIMP.cmd @Echo Off REM переключаемся на Windows - кодировку chcp 1251 >NUL :: Скачиваем программу с сайта в пупку %COMMANDER_PATH%\update "%COMMANDER_PATH%\update\bin\curl" -O http://www.aimp.ru/index.php?do=download ren "*.php_do=download" "*.txt" FindStr /C:"http://aimp.su/storage" index.txt >"temp.txt del "index.txt" rename "temp.txt" "index.txt" for /f delims^=^"^ tokens^=2 %%i in (index.txt) do "%COMMANDER_PATH%\update\bin\wget.exe" %%i :: Переименовываем файл rename "*.exe" "aimp.exe" :: Распаковываем портативную программу в папку TEMP start /wait aimp.exe /AUTO="%TEMP%\Aimp\" /PORTABLE /SILENT :: Копируем файлы и папки из TEMP\Aimp в папку %COMMANDER_PATH%\update\Downloads\Aimp "%~dp0\bin\robocopy" "%TEMP%\Aimp" "%~dp0\Downloads\Aimp" /MOVE /E :: Очищаем папку TEMP и удаляем некоторые файлы из папки %COMMANDER_PATH%\update\Downloads\Aimp DEL /F /S /Q /A "%TEMP%\*" DEL "%COMMANDER_PATH%\update\Downloads\Aimp\Uninstall.*" DEL /Q "%COMMANDER_PATH%\update\Downloads\Aimp\Skins\*.*" :: Копируем свои настройки из %COMMANDER_PATH%\update\AIMP_options в %COMMANDER_PATH%\update\Downloads\Aimp "%~dp0\bin\robocopy" "%~dp0\AIMP_options" "%~dp0\Downloads\Aimp" /S /E :: Подчищаем DEL /Q "aimp.exe" DEL /Q "index.txt" :: Чистка папки с программой в %COMMANDER_PATH%\Utilites\Audio\AIMP DEL /F /S /Q /A "%COMMANDER_PATH%\Utilites\Audio\AIMP" set delfolder=%COMMANDER_PATH%\Utilites\Audio\AIMP pushd "%delfolder%" rmdir /s /q "%delfolder%" popd :: Копируем папки и файлы из %COMMANDER_PATH%\update\Downloads\Aimp в %COMMANDER_PATH%\Utilites\Audio\AIMP "%~dp0\bin\robocopy" "%~dp0Downloads\Aimp" "%COMMANDER_PATH%\Utilites\Audio\AIMP" /MOVE /E :: Чистим папку %COMMANDER_PATH%\update\Downloads DEL /F /S /Q /A "%COMMANDER_PATH%\update\Downloads" set delfolder=%COMMANDER_PATH%\update\Downloads pushd "%delfolder%" rmdir /s /q "%delfolder%" popd EXIT |
|
Отправлено: 19:52, 17-04-2017 | #18 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
Цитата Iska:
Меня интересуют бесплатные программы с сайтов, где есть портативные программы. |
|||
Отправлено: 20:09, 17-04-2017 | #19 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата 41275jur:
Вот примерная, криво- и косорылая болванка кода для Imagine (я понимаю, конечно, что код — ужас-ужас-ужас), проверялся под PowerShell 5.0: Скрытый текст
#http://www.nyam.pe.kr/dev/imagine/download/unicode/Imagine_1.0.9_Unicode.zip $oUri = New-Object -TypeName 'System.Uri' -ArgumentList 'http://www.nyam.pe.kr/blog/entry/Imagine' $oRegExp4DownloadFileName = New-Object -TypeName 'System.Text.RegularExpressions.Regex' ` -ArgumentList '^http://www\.nyam\.pe\.kr/dev/imagine/download/unicode/(Imagine_[\d\.]+_Unicode\.zip)$', $([System.Text.RegularExpressions.RegexOptions]::IgnoreCase) $oRegExp4ProductVersion = New-Object -TypeName 'System.Text.RegularExpressions.Regex' ` -ArgumentList '^http://www\.nyam\.pe\.kr/dev/imagine/download/unicode/Imagine_([\d\.]+)_Unicode\.zip$', $([System.Text.RegularExpressions.RegexOptions]::IgnoreCase) $sExpandPath = '.\Imagine' $sExpandFileName = 'Imagine.exe' $sExpandFullName = "$sExpandPath\$sExpandFileName" Write-Host "Update checking…" try { $oHtmlWebResponseObject = Invoke-WebRequest -Uri $oUri -UseBasicParsing -ErrorAction Stop } catch { $oHttpStatusCode = $_.Exception.Response.StatusCode Write-Host "Can't load [$($oUri.AbsoluteUri)] ($($oHttpStatusCode.value__): $oHttpStatusCode)" } $oHtmlWebResponseObject.Links | ForEach-Object -Process { $sHRef = $_.href if($oRegExp4DownloadFileName.IsMatch($sHRef)) { $sDownloadFileName = $oRegExp4DownloadFileName.Matches($sHRef).Item(0).Groups.Item(1).Value $sDownloadProductVersion = $oRegExp4ProductVersion.Matches($sHRef).Item(0).Groups.Item(1).Value Write-Host "Remote product version is [$sDownloadProductVersion]." if(Test-Path -Path $sExpandFullName -PathType Leaf) { $sExpandProductVersion = (Get-Item -Path $sExpandFullName).VersionInfo.ProductVersion Write-Host "Local product version is [$sExpandProductVersion]." } else { $sExpandProductVersion = "0.0.0.0" Write-Host "Local product not found." } if($sDownloadProductVersion -ne $sExpandProductVersion) { Write-Host "Try downloading…" (New-Object -TypeName 'System.Net.WebClient').DownloadFile($sHRef, $sDownloadFileName) if(Test-Path -Path $sDownloadFileName -PathType Leaf) { Write-Host "Unzip downloaded file [$sDownloadFileName] into [$sExpandPath]…" Expand-Archive -Path $sDownloadFileName -DestinationPath $sExpandPath -Force | Out-Null Write-Host "Ready." } else { Write-Host "Not found downloaded file [$sDownloadFileName]." } } else { Write-Host "Current version [$sExpandProductVersion] is up to date." } } } Загружаем страницу html со ссылками на загрузку, проверяем все ссылки, сверяясь по регулярке, при совпадении вычленяем из ссылки номер версии, который сравниваем с версией исполняемого файла в каталоге .\Imagine (если таковой каталог и файл наличествуют), при разнице в версиях или отсутствии локального файла производим загрузку и распаковку архива в указанный каталог. Приведённый алгоритм применим только к данному конкретному продукту. Для других приложений он может заметно отличаться — ссылка на загрузку может не содержать имя файла, номер версии нужно будет вычленять не по самой ссылке, а в теле той же или другой страницы, а то и вовсе сначала потребуется полная загрузка файла, и т.п. тонкости. |
|
Последний раз редактировалось Iska, 22-04-2017 в 10:51. Отправлено: 10:41, 22-04-2017 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Копирование текста колонками | niko_dovgiy | Скриптовые языки администрирования Windows | 2 | 07-12-2015 15:29 | |
Интерфейс - Копирование текста в любых окнах | Ardenen | Microsoft Windows 7 | 3 | 23-07-2015 09:09 | |
CMD/BAT - [решено] Замена части текста в txt файлах | Traveller124 | Скриптовые языки администрирования Windows | 7 | 02-04-2012 19:16 | |
C/C++ - Извлечение из текста нужной части | Alexey271 | Программирование и базы данных | 9 | 25-11-2010 13:19 | |
копирование текста | volin | Хочу все знать | 10 | 08-01-2007 00:18 |
|