Eu escrevi este arquivo em lote muito simples para organizar os arquivos em um diretório, movendo-os para pastas por data. Portanto, um arquivo cuja última data de modificação é 31-03-2018 vai para a pasta "2018-03-31 -".
O script é o seguinte:
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%a IN (*) DO (
IF NOT "%%a"=="%~nx0" (
FOR %%b IN (%%a) DO (SET FileDate=%%~tb)
SET day=!FileDate:~0,2!
SET month=!FileDate:~3,2!
SET year=!FileDate:~6,4!
SET filename=!year!-!month!-!day! -
IF NOT EXIST "!filename!" (MD "!filename!")
MOVE /-Y "%%a" "!filename!"
)
)
ENDLOCAL
PAUSE
Dado este diretório
Isso acontece. Veja aquela pasta estranha no topo? Por que isso está acontecendo? Não deveria estar acontecendo desde que eu tenha EnableDelayedExpansion.
Isto é o que está dentro dessa pasta. Apenas arquivos normais como todos os outros.
Alguém pode esclarecer por que isso está acontecendo e talvez gentilmente fornecer uma correção?
EDIT 1:
Esta é a saída do console para um diretório com 3 arquivos:
D:\Leonor\Fotos\Família05>´╗┐@ECHO off
'´╗┐@ECHO' is not recognized as an internal or external command,
operable program or batch file.
D:\Leonor\Fotos\Família05>SETLOCAL ENABLEDELAYEDEXPANSION
D:\Leonor\Fotos\Família05>FOR %a IN (*) DO (
Rem @ECHO %a>test.txt
Rem @ECHO Organizador de Fotos_old.bat>>test.txt
IF NOT "%a" == "Organizador de Fotos_old.bat" (
Rem Se o ficheiro não for este batch...
FOR %b IN (%a) DO (SET FileDate=%~tb )
ECHO !FileDate!
SET day=!FileDate:~0,2!
ECHO !day!
SET month=!FileDate:~3,2!
ECHO !month!
SET year=!FileDate:~6,4!
ECHO !year!
SET filename=!year!-!month!-!day! -
ECHO !filename!
IF NOT EXIST "!filename!" (MD "!filename!" )
Rem MOVE /-Y "%a" "!filename!"
)
)
D:\Leonor\Fotos\Família05>(
Rem @ECHO Imagem - Carnaval+Pai Nosso - 2005 001.jpg>test.txt
Rem @ECHO Organizador de Fotos_old.bat>>test.txt
IF NOT "Imagem - Carnaval+Pai Nosso - 2005 001.jpg" == "Organizador de Fotos_old.bat" (
Rem Se o ficheiro não for este batch...
FOR %b IN (Imagem - Carnaval+Pai Nosso - 2005 001.jpg) DO (SET FileDate=%~tb )
ECHO !FileDate!
SET day=!FileDate:~0,2!
ECHO !day!
SET month=!FileDate:~3,2!
ECHO !month!
SET year=!FileDate:~6,4!
ECHO !year!
SET filename=!year!-!month!-!day! -
ECHO !filename!
IF NOT EXIST "!filename!" (MD "!filename!" )
Rem MOVE /-Y "Imagem - Carnaval+Pai Nosso - 2005 001.jpg" "!filename!"
)
)
D:\Leonor\Fotos\Família05>(SET FileDate= )
D:\Leonor\Fotos\Família05>(SET FileDate= )
D:\Leonor\Fotos\Família05>(SET FileDate= )
D:\Leonor\Fotos\Família05>(SET FileDate= )
D:\Leonor\Fotos\Família05>(SET FileDate= )
D:\Leonor\Fotos\Família05>(SET FileDate= )
D:\Leonor\Fotos\Família05>(SET FileDate= )
ECHO is on.
~0,2
~3,2
~6,4
~6,4-~3,2-~0,2 -
D:\Leonor\Fotos\Família05>(
Rem @ECHO Organizador de Fotos.bat>test.txt
Rem @ECHO Organizador de Fotos_old.bat>>test.txt
IF NOT "Organizador de Fotos.bat" == "Organizador de Fotos_old.bat" (
Rem Se o ficheiro não for este batch...
FOR %b IN (Organizador de Fotos.bat) DO (SET FileDate=%~tb )
ECHO !FileDate!
SET day=!FileDate:~0,2!
ECHO !day!
SET month=!FileDate:~3,2!
ECHO !month!
SET year=!FileDate:~6,4!
ECHO !year!
SET filename=!year!-!month!-!day! -
ECHO !filename!
IF NOT EXIST "!filename!" (MD "!filename!" )
Rem MOVE /-Y "Organizador de Fotos.bat" "!filename!"
)
)
D:\Leonor\Fotos\Família05>(SET FileDate= )
D:\Leonor\Fotos\Família05>(SET FileDate= )
D:\Leonor\Fotos\Família05>(SET FileDate= )
ECHO is on.
~0,2
~3,2
~6,4
~6,4-~3,2-~0,2 -
D:\Leonor\Fotos\Família05>(
Rem @ECHO Organizador de Fotos_old.bat>test.txt
Rem @ECHO Organizador de Fotos_old.bat>>test.txt
IF NOT "Organizador de Fotos_old.bat" == "Organizador de Fotos_old.bat" (
Rem Se o ficheiro não for este batch...
FOR %b IN (Organizador de Fotos_old.bat) DO (SET FileDate=%~tb )
ECHO !FileDate!
SET day=!FileDate:~0,2!
ECHO !day!
SET month=!FileDate:~3,2!
ECHO !month!
SET year=!FileDate:~6,4!
ECHO !year!
SET filename=!year!-!month!-!day! -
ECHO !filename!
IF NOT EXIST "!filename!" (MD "!filename!" )
Rem MOVE /-Y "Organizador de Fotos_old.bat" "!filename!"
)
)
D:\Leonor\Fotos\Família05>ENDLOCAL
D:\Leonor\Fotos\Família05>PAUSE
Press any key to continue . . .