Обновить файл в каждом подкаталоге с указанным именем - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть , который извлекает файл из URL-адреса с помощью , а затем выводит / обновляет файл в определенном каталоге.Но у меня есть много таких каталогов, единственное, что меняется в пути, это числа между \command\ и \setup\.Как заставить его автоматически помещать файл в каждую папку?

По сути, я хотел бы вывести загруженный текстовый файл в каждый из подкаталогов install этого пути.

Также, как я мог сделать это молча?

@echo off
echo !!! PRESS ANY KEY TO CONTINUE AND UPDATE!!!
pause

powershell -Command "Invoke-WebRequest http://example.com/log/read.txt" -OutFile C:\Users\Administrator\AppData\Roaming\base\command\234235234\setup\install\read.txt 2>NUL >NUL

echo !!! DONE NOW !!!
echo !!! YOU CAN RE-OPEN NOW !!!

1 Ответ

0 голосов
/ 30 апреля 2019
 for /d /r "dirname" %%a in (*) do if /i "%%~nxa"=="install" echo %%a

может быть полезно для вас.

Ваше требование неясно.Вы хотите скопировать файл в подкаталоги install только ...\234235234\.. или ...\*\...?

Заменить dirname именем начального каталога, будь то ...\234235234\.. или C:\Users\Administrator\AppData\Roaming\base\command и команда, которую я показал, сообщит обо всех каталогах install, содержащихся в dirname.Все, что вам нужно сделать, это изменить echo на соответствующую команду copy - см. copy /? в приглашении.Вы можете подавить ответы copy, добавив >nul 2>nul (подавление сообщений и подавление сообщений об ошибках)

for /d /r с помощью *, так как элемент списка будет обрабатывать список всех подкаталогов, начиная с назначенногокаталог.Команда if выбирает только листовые каталоги, которые соответствуют install в любом случае (/ i)


Поскольку

for /d /r ...

не обнаруживает и не обнаруживает скрытые каталоги, существует другой подход:

for /f "delims=" %%a in ('dir /s /b /ad "dirname" ') do if /i "%%~nxa"=="sub1" echo %%a

Который в данном случае должен быть

for /f "delims=" %%a in ('dir /s /b /ad "C:\Users\Administrator\AppData\Roaming\base\command" ') do if /i "%%~nxa"=="sub1" echo %%a

Команда dir создает список в /b основной (только для имени) форме, /s, включая подкаталоги,Только /ad каталогов (имена с установленным атрибутом directory).Этот список обрабатывается построчно for /f без разделителей, поэтому вся строка (включая пробелы, если есть) присваивается %%a и отображается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...