我需要一个oneliner来等待文件,直到它被创建。
有没有办法把它写成Windows批处理命令?我不能使用GOTO,因为我使用了pushd。
类似的东西:
IF NOT EXIST \\blablabal\myfile.txt sleep(30)
答案 0 :(得分:2)
下面的解决方案是一个单行程序,应该在命令提示符下执行,如请求的那样(批处理文件不 a&#34;单行&#34;):< / p>
cmd /C for /L %i in () do if not exist \\blablabal\myfile.txt (timeout /T 30 ^>NUL) else exit
如果您愿意,可以将此行插入批处理文件中,使百分号翻倍。
答案 1 :(得分:0)
我想你想要avoid goto
statement and :label
inside a parenthesized code block。使用call
,如下所示:
(
rem some code here
call :waitForFile
rem another code here
)
rem yet another code here
rem next `goto` skips `:waitForFile` subroutine; could be `goto :eof` as well
goto :nextcode
:waitForFile
IF EXIST \\blablabal\myfile.txt goto :eof
TIMEOUT /T 30 >NUL
goto :waitForFile
:nextcode
但是,如果您需要 oneliner 等待文件直到创建文件,则将其写为Windows批处理脚本:将下一个代码段保存为waitForFile.bat
@ECHO OFF
SETLOCAL EnableExtensions
:waitForFile
IF EXIST "%~1" ENDLOCAL & goto :eof
TIMEOUT /T 30 >NUL
goto :waitForFile
按如下方式使用:
waitForFile "\\blablabal\myfile.txt"
call waitForFile "\\blablabal\myfile.txt"
确保waitForFile.bat
出现在当前目录或path
environment variable中的某个位置。