我有一个batch-file,它使用powershell从URL中提取文件,然后在特定目录中输出/更新文件。但是我有许多这样的目录,唯一改变路径的是\command\
和\setup\
之间的数字。我将如何将其自动放入每个文件夹中?
基本上,我想在该路径的每个install
subdirectories中输出下载的文本文件。
我又该如何默默地实现它?
@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 !!!
答案 0 :(得分:0)
for /d /r "dirname" %%a in (*) do if /i "%%~nxa"=="install" echo %%a
对您可能有用。
您的要求不清楚。您要将文件仅复制到install
还是...\234235234\..
的{{1}}子目录中?
将...\*\...
替换为起始目录的名称,无论是dirname
还是...\234235234\..
,并且我显示的命令将报告{下包含的所有C:\Users\Administrator\AppData\Roaming\base\command
目录{1}}。然后,您需要做的就是将install
更改为适当的dirname
命令-在提示符下查看echo
。您可以通过附加copy
(抑制消息并抑制错误消息)来抑制copy /?
的响应
copy
为列表元素的 >nul 2>nul
将处理从指定目录开始的所有子目录的列表。 for /d /r
命令在两种情况下(/ i)仅选择与*
匹配的叶目录
因为
if
也不检测隐藏目录,另一种方法是
install
在这种情况下应该是
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
个目录(名称为{{1 }}属性集)。该列表由/s
逐行处理,没有分隔符,因此整行(包括空格,如果有的话)都分配给/ad
并显示。