Oneliner等待创建文件

时间:2015-11-26 09:06:37

标签: batch-file

我需要一个oneliner来等待文件,直到它被创建。

有没有办法把它写成Windows批处理命令?我不能使用GOTO,因为我使用了pushd。

类似的东西:

IF NOT EXIST \\blablabal\myfile.txt  sleep(30)

2 个答案:

答案 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中的某个位置。