我是Windows批处理脚本的新手,这就是我想要做的事情:
我有一个文件夹,里面装有包含各种文件的子文件夹。但是,每个子文件夹都有一个特定的文件(mysecret.txt),我必须找到它并在第三方应用程序上执行导入/导出序列。暂时不要介意导入/导出序列,因为我已经编写了脚本并对其进行了测试。我的问题是如何遍历目录,找到“mysecret.txt”文件并使用第三方应用程序执行操作。
这是我到目前为止所做的:
for /r (C:\Path\to\folder) %%f IN (mysecret.txt) do call :importexport "%%f"
endlocal
goto :eof
:importexport
REM *** SOMETHING LIKE ****
myapplication.exe /import %%f
sleep 10
myapplication.exe /export %%f
:eof
exit
我感到困惑的是importexport
部分的具体细节以及如何使用传入的%%f
变量?
非常感谢任何帮助。
答案 0 :(得分:4)
您可以尝试使用此功能,看看它是否适合您
@echo off
for /r "C:\path\to\folder" %%f in (mysecret.txt) do call :importexport "%%f"
endlocal
goto :eof
:importexport
if not exist %1 goto :eof
echo Found %1 with content:
more %1
echo Importing..
myapplication.exe /import %1
echo Sleeping..
timeout /t 10 >nul
echo Exporting..
myapplication.exe /export %1
echo.
它比它需要的更冗长,如果你愿意,只需删除额外的/ echo线。
这是输出:
Found C:\path\to\folder\subfolder1\mysecret.txt with content:
subfolder1 - mysecret.txt
Importing..
myapplication.exe /import C:\path\to\folder\subfolder1\mysecret.txt
Sleeping..
Exporting..
myapplication.exe /export C:\path\to\folder\subfolder1\mysecret.txt
Found C:\path\to\folder\subfolder1\subfolder1a\mysecret.txt with content:
subfolder1a - mysecret.txt
Importing..
myapplication.exe /import C:\path\to\folder\subfolder1\subfolder1a\mysecret.txt
Sleeping..
Exporting..
myapplication.exe /export C:\path\to\folder\subfolder1\subfolder1a\mysecret.txt
Found C:\path\to\folder\subfolder2\mysecret.txt with content:
subfolder2 - mysecret.txt
Importing..
myapplication.exe /import C:\path\to\folder\subfolder2\mysecret.txt
Sleeping..
Exporting..
myapplication.exe /export C:\path\to\folder\subfolder2\mysecret.txt
我在运行时在myapplication.exe前添加了echo,因为我没有该应用程序。
答案 1 :(得分:0)
这里有一些东西:(虽然未经测试。)
contig_len_calculator
脚本将遍历每个子目录,在找到的每个for /r (C:\Path\to\folder) %%f IN (mysecret.txt) do (
myapplication.exe /import %%f
ping localhost -n 3>nul
myapplication.exe /export %%f
)
endlocal
pause
exit
上执行导入和导出序列。 %% f是myfile.txt
。并且ping取代myfile.txt
部分。
希望有所帮助!
答案 2 :(得分:0)
@echo off
setlocal enableextensions disabledelayedexpansion
for /r "C:\Path\to\folder" %%f IN (mysecret.txt) do if exist "%%~ff" (
myapplication.exe /import "%%~ff"
>nul ping -n 11 localhost
myapplication.exe /export "%%~ff"
)
for /r
中指示的路径作为起始文件夹不使用括号,但引号(set)
的{{1}}部分中指示字符串时,如果字符串不包含通配符,则指定起点下的所有文件夹(或当前文件夹(如果没有指示初始路径)将枚举,并附加字符串。因此,代码在处理之前测试文件是否存在。for /r
不是本机Windows命令,因此我使用sleep
替换等效等待。如果您可以使用ping
或sleep
命令,则无需timeout