I need a oneliner to wait for a file until it is created.
Is there a way to write that as a windows batch command? I cant have GOTO in it because I use pushd.
something like:
IF NOT EXIST \\blablabal\myfile.txt sleep(30)
I need a oneliner to wait for a file until it is created.
Is there a way to write that as a windows batch command? I cant have GOTO in it because I use pushd.
something like:
IF NOT EXIST \\blablabal\myfile.txt sleep(30)
The solution below is a one-liner that should be executed at the command-prompt, as requested (a Batch file is not a "one-liner"):
cmd /C for /L %i in () do if not exist \\blablabal\myfile.txt (timeout /T 30 ^>NUL) else exit
If you wish, you may insert this line in a Batch file doubling the percent sign.
I'd suppose that you want to avoid goto
statement and :label
inside a parenthesized code block. Use call
as follows:
(
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
However, if you need a oneliner to wait for a file until it is created, written as a windows batch script: save next code snippet as waitForFile.bat
@ECHO OFF
SETLOCAL EnableExtensions
:waitForFile
IF EXIST "%~1" ENDLOCAL & goto :eof
TIMEOUT /T 30 >NUL
goto :waitForFile
Use it as follows:
waitForFile "\\blablabal\myfile.txt"
call waitForFile "\\blablabal\myfile.txt"
Be sure that waitForFile.bat
is present in current directory or somewhere in path
environment variable.
cmd /c "@echo off & for /l %z in () do (if EXIST c:\file.ext exit)"
Hammers the cpu though...