У меня небольшая проблема с выполнением ниже пакетного задания, как показано во фрагменте кода.Пакетное задание выполняется очень хорошо при запуске в каталоге, в котором оно находится (C: \ Temp \ TestFile).Однако я заметил, что ничего не происходит, когда я планирую выполнение задания через планировщик задач.Планировщик задач использует учетную запись службы с параметром «запускать, вошел ли пользователь в систему или нет».
@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set DateTime=%%a
set Yr=%DateTime:~0,4%
set Mon=%DateTime:~4,2%
set Day=%DateTime:~6,2%
set Hr=%DateTime:~8,2%
set Min=%DateTime:~10,2%
for /f "delims=" %%I in ('dir /b *.xlsx ^| findstr /vlg:"valid_naming_conventions.txt"') do move "%%I" "C:\Temp\TestFile\Archive\%%~nI__%Yr%-%Mon%-%Day%%%~xI"
Я считаю, что учетная запись службы не распознает каталог.Однако после внесения изменений в приведенное ниже ничего не происходит, и файлы, которые не соответствуют действующим соглашениям об именах, указанным в текстовом файле, по-прежнему остаются в том же каталоге и не перемещаются в папку архива:
@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set DateTime=%%a
set Yr=%DateTime:~0,4%
set Mon=%DateTime:~4,2%
set Day=%DateTime:~6,2%
set Hr=%DateTime:~8,2%
set Min=%DateTime:~10,2%
set MY_PATH="C:\Temp\TestFile"
for /f "delims=" %%I in ('%MY_PATH% /b *.xlsx ^| findstr /vlg:"valid_naming_conventions.txt"') do move "%%I" "C:\Temp\TestFile\Archive\%%~nI__%Yr%-%Mon%-%Day%%%~xI"
Ваша помощь по этому вопросу будет принята с благодарностью.Ждем ваших предложений!
Вывод после запуска планировщика задач:
C:\Windows\system32>rem @echo off
C:\Windows\system32>for /F "delims=" %a in ('wmic OS Get localdatetime | find "."') do set DateTime=%a
C:\Windows\system32>set DateTime=20190414170803.358000+120
C:\Windows\system32>set Yr=2019
C:\Windows\system32>set Mon=04
C:\Windows\system32>set Day=14
C:\Windows\system32>set Hr=17
C:\Windows\system32>set Min=08
C:\Windows\system32>set
MY_PATH="C:\Temp\TestFile"
C:\Windows\system32>for /F "delims=" %I in ('dir /B/A-D "C:\Temp\TestFile"\*.xlsx | findstr /vlg:"valid_naming_conventions.txt"') do move "%I" "C:\Temp\TestFile\Archive\%~nI__2019-04-14%~xI"
C:\Windows\system32>move "01-TestFile.xlsx" "C:\Temp\TestFile\Archive\01-TestFile__2019-04-14.xlsx"
C:\Windows\system32>move "02-TestFile.xlsx" "C:\Temp\TestFile\Archive\02-TestFile__2019-04-14.xlsx"
C:\Windows\system32>move "03-TestFile.xlsx" "C:\Temp\TestFile\Archive\03-TestFile__2019-04-14.xlsx"
C:\Windows\system32>move "04-TestFile.xlsx" "C:\Temp\TestFile\Archive\04-TestFile__2019-04-14.xlsx"
C:\Windows\system32>move "05-TestFile.xlsx" "C:\Temp\TestFile\Archive\05-TestFile__2019-04-14.xlsx"
C:\Windows\system32>move "06-TestFile.xlsx" "C:\Temp\TestFile\Archive\06-TestFile__2019-04-14.xlsx"