首页 文章

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

提问于
浏览
0

希望有人可以提供帮助 .

这就是我想要做的 . 我有一个文件夹(文件夹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
    @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 方法 .

  • 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
    

相关问题