Batch file 是否在创建/放置/保存/存储到带有批处理文件的目录/文件夹时打开新文件?
大家好,堆栈溢出 我在网上搜索了很多,但是没有找到任何相关的东西 我正在编写一个脚本,一旦将文件放入目录中,它就会直接打开一个文件。假设我有目录:Batch file 是否在创建/放置/保存/存储到带有批处理文件的目录/文件夹时打开新文件?,batch-file,Batch File,大家好,堆栈溢出 我在网上搜索了很多,但是没有找到任何相关的东西 我正在编写一个脚本,一旦将文件放入目录中,它就会直接打开一个文件。假设我有目录: F:\Files 现在我下载一个文件到那个文件夹。将创建以下内容: F:\Files\download.zip REM This is the actual file, but 0 KB F:\Files\download.part REM This is the content of the *.zip, until it is ful
F:\Files
现在我下载一个文件到那个文件夹。将创建以下内容:
F:\Files\download.zip REM This is the actual file, but 0 KB
F:\Files\download.part REM This is the content of the *.zip, until it is fully downloaded.
那么,当download.zip的大小大于1字节时,我可以使用哪个脚本打开它?假设
%1
是作为参数传递给脚本的文件名,您可以执行以下操作:
IF %~z1 GTR 0 (
commands to process the file
)
IF%~z1 GTR 0(
处理文件的命令
)
%~z1
计算结果为%1
中指定的文件大小GTR
表示大于,因此条件检查大小是否大于0,如果大于0,则执行处理文件的命令。此bach文件应满足您的要求(不确定是否在所有版本的Windows上都能工作)
它正在使用的脚本,但添加了您请求的功能
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET dirname=F:\Files
:Begin
CLS
ECHO %TIME%
FOR /R "%dirname%\" %%a IN (*.zip) DO CALL :process1 %%a
ping.exe localhost -n 11 >nul
GOTO Begin
:process1
IF %~z1 GTR 0 "%1"
GOTO :EOF
ping.exe localhost-n 11>nul
只是一个延迟,因此您可以让批处理文件保持运行,它将按照-n 11
的定义每10秒循环一次,这将导致本地主机每隔1秒进行11次ping,在几微秒后第一次ping已经成功
我添加了命令行ECHO%TIME%
,这样就可以看到它仍然在工作,因为这个时间值会在每次循环迭代中更新
这种批量解决方案有一个缺点。如果在下一次循环运行时ZIP文件仍在目录中,它会再次打开ZIP文件。我假设您已经完成了该部分,现在我可以看出,这样做有点为时过早。但除此之外,我必须说你的问题有点模糊,你现在已经得到了什么。事实上,从某个角度来看,你可以从你的问题中得出,目前你什么都没有。无论如何,你真的应该一次问一件事。这对人们来说不那么令人沮丧,并且会给你更多的机会来获得每个问题的最佳答案。