我有一个批处理文件,该文件使用powerShell从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:UsersAdministratorAppDataRoamingbasecommand234235234setupinstallread.txt 2>NUL >NUL
echo !!! DONE NOW !!!
echo !!! YOU CAN RE-OPEN NOW !!!
for /d /r "dirname" %%a in (*) do if /i "%%~nxa"=="install" echo %%a
可能对您有用。
您的要求尚不清楚。您要仅将文件复制到仅...234235234..
的install
子目录,还是...*...
?
将dirname
替换为启动目录的名称,无论是...234235234..
还是C:UsersAdministratorAppDataRoamingbasecommand
,我显示的命令将报告dirname
中包含的所有install
目录。然后,您需要做的就是将echo
更改为适当的copy
命令 - 从提示符中请参见copy /?
。您可以通过附加>nul 2>nul
抑制copy
的响应(压制消息并抑制错误消息(
for /d /r
带有*
作为列表元素将处理从提名目录开始的所有子目录的列表。if
命令仅选择匹配install
的LEAF目录(/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:UsersAdministratorAppDataRoamingbasecommand" ') do if /i "%%~nxa"=="sub1" echo %%a
dir
命令在/b
基本(仅名称(表单,/s
中产生一个列表,其中包括子目录,仅目录的/ad
(带有directory
属性集的名称(。此列表是由for /f
逐行处理的,没有定销程序,因此将整个行(包括空格(如果有((分配给%%a
并显示。