将文件从一个文件夹移动到热文件夹但是只有在热文件夹为空时才移动一个文件夹

时间:2013-08-01 15:54:06

标签: batch-file vbscript

希望有人可以提供帮助。

这就是我想要做的。我有一个文件夹(文件夹A)与.zip和.z0 *(从.z01到.z09的任何东西),我想将它们移动到一个热文件夹(文件夹B)我有一个.bat文件,移动一切.z0 *首先是.zips(见下文)

move / -y“c:\ Folder A * .z0 *”“E:\ Folder B \”

移动“c:\ Folder A * .zip”“E:\ Folder B \”

暂停

但这是棘手的一点(无论如何对我来说)

文件夹B是一个热门文件夹,当文件进入它时,系统会将其选中并移动到SFTP站点,由于文件的大小,这需要一些时间。我被告知我必须一次移动一个文件,因为之前的文件已经从文件夹B开始,按顺序.z0 *首先是.zip的结尾。

所以我可以在.bat中调用.vbs或所有它以.bat或其他可由任务调度程序运行的方式执行此操作。哦忘了说我需要它每周运行一次。

由于

2 个答案:

答案 0 :(得分:0)

非常确定这应该在vbscript中做你想要的:

Set objFS = CreateObject("Scripting.FileSystemObject")
set objFolderA = objFS.GetFolder("c:\Folder A")
set objFolderB = objFS.GetFolder("c:\Folder B")

For each objFile in objFolderA.Files
    Do While True
        If objFolderB.Files.Count = 0 Then
             objFS.MoveFile objFile.Path, ojbFolderB.Path & "\"
             Exit Do
        End If
    Loop
Next

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=c:\sourcedir"
SET "destdir=c:\destdir"
FOR %%x IN (
  00 01 02 03 04 05 06 07 08 09 ip
 ) DO IF EXIST "%sourcedir%\*.z%%x" (
 FOR /f "delims=" %%a IN (
   'dir /b /a-d "%sourcedir%\*.z%%x" '
   ) DO (
  SET filename=%%a
  CALL :moveslowly
 )
)
GOTO :EOF

:moveslowly
IF EXIST "%destdir%\*z*" timeout /t 1 >nul&GOTO :moveslowly
MOVE "%sourcedir%\%filename%" "%destdir%\" >nul
GOTO :eof

这里唯一的问题是timeout,可能安装也可能不安装(取决于版本)。如果您的计算机上不存在,则可以使用其他延迟机制之一,如CHOICE方法(也取决于版本)或PING方法。