1

好的,我的问题很简单我想创建一个批处理文件或一个 shell 脚本,当文件保存到文档文件夹时将启动它,以便它可以将文件排序到其指定的子文件夹。谁能指出我正确的方向?

我宁愿不必安装单独的程序,并希望将其保留为批处理。

机器备注:OS=Windows 7 pro

提前致谢!

编辑:这段代码非常适合我需要的东西:

    @echo off 
    :A
    CD "desktop\file moving test"
    tree

    move /Y 1*.* 1*
    move /Y 2*.* 2*
    move /Y 3*.* 3*
    goto A 

感谢每一位回答的人。

4

3 回答 3

2

您只需要一个循环和timeout(Vista 及更高版本)或ping延迟 5 分钟,然后重复循环。

@echo off
:loop
  if exist *.txt (
     copy "*.txt" "d:\wherever"
  ) 
timeout 300
goto :loop
于 2013-10-18T05:22:07.067 回答
1

要监视 Documents 文件夹中的文件更改,您可以batch-file从以前的计划任务中调用它,您可以使用SCHTASK以下命令创建该任务:

@Echo OFF

REM By Elektro H@cker

PUSHD "%USERPROFILE%\Documents"

:: Recycle past session logs
Del /Q "%TEMP%\FileList.tmp","%TEMP%\FileListNew.tmp"

:Monitor_Loop
If Exist "%TEMP%\FileList.tmp" (
    Dir /B /A-D > "%TEMP%\FileListNew.tmp"
    Echo N | Comp "%TEMP%\FileList.tmp" "%TEMP%\FileListNew.tmp" 1>NUL 2>&1 || (
        Echo File changes found on directory.
        Call :FileOp
    )

    MOVE /Y "%TEMP%\FileListNew.tmp" "%TEMP%\FileList.tmp" 1>NUL

    ) ELSE (

        Dir /B /A-D > "%TEMP%\FileList.tmp"
)

REM Ping -n 5 LOCALHOST 1>NUL
Timeout /T 5 1>NUL & REM Avoid Ping while you are in Windows 7/8.
GOTO :Monitor_Loop

:FileOp
For %%# in ("*") Do (Echo "%%~#")
GOTO:EOF

PS:只需添加您需要对过程中找到的新文件执行的操作:FileOp

您可能想使用此VBScript文件来运行隐藏的任务/批处理:

' Run Hidden Process
' By Elektro H@cker

Process   = """" & WScript.Arguments(0) & """"
Arguments = null

For X = 1 to WScript.Arguments.Count - 1
   Arguments = Arguments & " " & _
               """" & WScript.Arguments(X) & """"
Next

WScript.CreateObject("WScript.Shell").Run _
Process & " " & Arguments, 0, False

Wscript.Quit
于 2013-10-18T02:04:53.860 回答
1

您可以制作一个批处理文件,用于将文件保存在文件夹中,然后运行所需的进程,或者将其设置为 Windows 进程,并每次运行一次,以检查差异。如果发现差异,则运行您的逻辑。类似于以下内容,并将其与先前的计数进行比较。我会将其作为计划任务执行,它运行您的批处理文件。

@echo off
for /f %%A in ('dir ^| find "File(s)"') do set cnt=%%A
echo File count = %cnt%
于 2013-10-18T01:53:15.303 回答