Нужен скрипт для непрерывного автоматического перемещения файлов из одной папки в другую с расширением файла txt - PullRequest
0 голосов
/ 27 октября 2019

Мне нужен скрипт для планировщика задач, который позволяет мне перемещать файлы из одной папки в другую только для файлов типа txt. Это означает, что когда я помещаю текстовый файл в папку, его необходимо немедленно переместить в другую папку. Если я поставлю любой файл, кроме txt, файл не должен двигаться. Это перемещение TXT-файла требует 24 * 7.

Я использовал приведенный ниже скрипт, но он перемещает все типы файлов, включая BAT-файл. Также не работает постоянно. Для перемещения файла необходимо запустить его вручную из планировщика задач.

@echo off
set "source=H:\Source\Send"
set "destination=F:\Destination>"

For /F "delims=" %%I IN ('DIR %source%\*.txt /A:-D /O:-D /B') DO COPY %SOURCE%\ "%%I" %target% & echo %%I & GOTO :END
:END

1 Ответ

0 голосов
/ 28 октября 2019

Вот скрипт, который каждую секунду проверяет наличие .txt файлов и перемещает их. Я разработал его как скрипт, который запускает непрерывный цикл. Вы можете запустить его с помощью планировщика задач и запустить с помощью планировщика задач по повторяющемуся расписанию. Он проверяет сам себя и не запускается снова, если уже запущен другой экземпляр. В него не включена проверка ошибок.
UNTESTED

@echo off

:: Use the parameter AuTosTaRt to start the actual loop.
:: This parameter should never be used directly/manually.
:: It should only be used by this script file to start itself.

if "%1"=="AuTosTaRt" goto :beginmove

:: Check if this script is already running
:: Note that it seems like there should be a better
:: reliable way to do this, but this is what I've
:: found over the years.

:: If the script is already running then exit.
:: Sometimes the windowtitle includes Administrator
tasklist /fi "windowtitle eq Administrator: Move text files"| find /i "cmd.exe" >nul && goto :eof
:: Sometimes the windowtitle doesn't include Administrator
tasklist /fi "windowtitle eq Move text files"| find /i "cmd.exe" >nul && goto :eof

:: Sometimes there is an odd timing issue where the script
:: is running but somehow the above lines do not find it.
:: Wait 5 seconds and check again just to make sure.
timeout /t 5 >nul
tasklist /fi "windowtitle eq Administrator: Move text files"| find /i "cmd.exe" >nul && goto :eof
tasklist /fi "windowtitle eq Move text files"| find /i "cmd.exe" >nul && goto :eof

:: If we get here, then the script isn't running.  Let's start it:
start "Move text files" /min cmd /d /c "%~dpnx0" AuTosTaRt
goto :eof



:beginmove
set "source=H:\Source\Send"
set "destination=F:\Destination"

:loop
move "%source%\*.txt" "%destination%" >nul 2>nul
:: Pause 1 second.  We don't need the loop to go crazy.
timeout /t 1 >nul
goto :loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...