Windows 保存新文档时要启动的批处理文件

Windows 保存新文档时要启动的批处理文件,windows,file,batch-file,automation,file-monitoring,Windows,File,Batch File,Automation,File Monitoring,好的,我的问题很简单,我想创建一个批处理文件或shell脚本,当一个文件保存到documents文件夹时,该脚本将启动,以便它可以将文件排序到指定的子文件夹。谁能用这个给我指出正确的方向吗 我希望不必安装单独的程序,并希望将其作为一个批处理 机器说明:OS=Windows 7 pro 提前谢谢 编辑:此代码非常适合我的需要: @echo off :A CD "desktop\file moving test" tree move /Y 1*.* 1*

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

我希望不必安装单独的程序,并希望将其作为一个批处理

机器说明: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 

感谢所有回答的人。

您可以制作一个批处理文件,用于将文件保存在文件夹中,然后运行所需的进程,或者将其设置为windows进程,并每n次运行一次,以检查差异。如果发现差异,则运行您的逻辑。像下面这样的事情,并将其与之前的计数进行比较。我会把它作为一个计划任务来执行,它运行您的批处理文件

@echo off
for /f %%A in ('dir ^| find "File(s)"') do set cnt=%%A
echo File count = %cnt%

您可以创建一个批处理文件,用于将文件保存在文件夹中,然后运行所需的进程,或者将其设置为windows进程,并每n次运行一次,以检查差异。如果发现差异,则运行您的逻辑。像下面这样的事情,并将其与之前的计数进行比较。我会把它作为一个计划任务来执行,它运行您的批处理文件

@echo off
for /f %%A in ('dir ^| find "File(s)"') do set cnt=%%A
echo File count = %cnt%

要监视Documents文件夹中的文件更改,您可以从上一个计划任务调用此
批处理文件
,您可以使用
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

要监视Documents文件夹中的文件更改,您可以从上一个计划任务调用此
批处理文件
,您可以使用
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

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

@echo off
:loop
  if exist *.txt (
     copy "*.txt" "d:\wherever"
  ) 
timeout 300
goto :loop

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

@echo off
:loop
  if exist *.txt (
     copy "*.txt" "d:\wherever"
  ) 
timeout 300
goto :loop


保持CMD窗口全天打开以监视文件更改不是问题吗?最好使用第三方应用程序,如Directory monitor。实际上,我通常全天打开批处理文件。这只是另一个提示。明白了,谢谢你的评论。整天打开CMD窗口来监视文件更改不是问题吗?你最好使用第三方应用程序,如Directory monitor。实际上我通常整天都打开批处理文件。这只是另一个提示。请理解,感谢您的评论。通常,当您在windows批处理中执行重复任务时,最好将其作为“计划任务”执行。这样说听起来有点奇怪。我自己是一个Bash人,但是在这样一个银行系统自动化的时候,我们用来处理Windows操作。为了得到好的结果,需要每分钟调用一个计划任务,显示CMD窗口产生一个可怕的令人厌恶的视觉效果,你最好考虑用这个代码打开CMD,或者使用VSB方法运行隐藏批处理文件,或者使用第三方免费应用程序(最佳解决方案)。由于学校配置网络书本映像的方式,我的计算机将无法执行计划任务。那么还有其他方法吗?@CS\u STEM是的,请查看我的答案,我在那里发布了一个可以在任务调度器中启动的代码,但我确实建议使用任何其他替代方法,而不是批处理/Bash。请原谅我的英语。@ElektroHacker不需要另一种选择。在我发表评论之前,我可能没有看到你的答案。感谢您的回答,我将尝试代码,看看会发生什么。通常,当您在windows批处理中执行重复任务时,最好将其作为“计划任务”执行。这样说听起来有点奇怪。我自己是一个Bash人,但是在这样一个银行系统自动化的时候,我们用来处理Windows操作。为了得到好的结果,需要每分钟调用一个计划任务,显示CMD窗口产生一个可怕的令人厌恶的视觉效果,你最好考虑用这个代码打开CMD,或者使用VSB方法运行隐藏批处理文件,或者使用第三方免费应用程序(最佳解决方案)。由于学校配置网络书本映像的方式,我的计算机将无法执行计划任务。那么还有其他方法吗?@CS\u STEM是的,请查看我的答案,我在那里发布了一个可以在任务调度器中启动的代码,但我确实建议使用任何其他替代方法,而不是批处理/Bash。请原谅我的英语。@ElektroHacker不需要另一种选择。在我发表评论之前,我可能没有看到你的答案。谢谢你的回答,我会试试代码,看看会发生什么。超时?如果该命令确实存在,为什么不在帮助列表中?@CS\u在Microsoft cmd支持团队总部阻止一个喝醉的星期五?我不确定是否喝醉了,但我会查看支持页面。超时?如果该命令确实存在,为什么不在帮助列表中?@CS\u在Microsoft cmd支持团队总部阻止一个喝醉的星期五?我不确定是否喝醉了,但我会查看支持页面。