【发布时间】:2015-04-03 16:12:23
【问题描述】:
所以我是批处理脚本和一般脚本的新手。我最近制作了一个脚本,其中源目录中的文件将根据其“上次修改日期”组织到目标目录中。
这是脚本的摘录:
@echo off
Setlocal EnableDelayedExpansion
echo Organise files
set /P _a="Enter source directory:"
set /P _b="Enter destination directory:"
set /P _c="Organise files by dd-mm-yyyy format (last modified)? y or n?"
if %_c% == y goto:ddmmyy
:ddmmyy
for %%A in ("%_a%\*") do echo %%~tA %%~snA %%~xA >> "%_a%\testtoken.txt"
for /F "tokens=1-7* delims=./ " %%B in (%_a%\testtoken.txt) do (
robocopy "%_a%" "%_b%\%%B-%%C-%%D" "%%G.%%H" /xf testtoken.txt /mov
)
除非我使用名称中带有空格的目录(例如 C:\Program Files 而不是 C:\Program),否则该脚本可以正常工作。在我使用 8.3 表示法之前,文件名中的空格也有同样的问题,但是使用 8.3 表示法会导致其他问题,例如 robocopy 无法复制名称非常相似的文件(例如 TUTORI~2、TUTORI~1、TUTORI~3 等。 )
testtoken.txt 的格式如下:
02/11/2014 06:02 PM SPSETU~1 .exe
16/11/2014 09:19 AM TUTORI~4 .docx
14/11/2014 12:00 PM TUTORI~2 .docx
16/11/2014 09:19 AM TUTORI~3 .docx
14/11/2014 12:00 PM TUTORI~1 .docx
16/11/2014 09:19 AM TU44E0~1 .docx
16/11/2014 09:19 AM TU05DE~1 .docx
16/11/2014 10:59 PM UNIFYI~1 .pdf
09/11/2014 07:55 PM ZOROAS~1 .jpg
那么有没有办法让脚本忽略空格?为什么 robocopy 不会在 8.3 表示法中复制名称非常相似的文件,有没有办法强制 robocopy 实际复制文件?
【问题讨论】:
-
PowerShell 是从哪里来的?我只看到一个批处理文件。
-
我只是为了可见性而添加的,因为 afaik powershell 类似于批处理。不过,我现在将其删除
-
这是一种完全不同的语言,目的略有重叠;)
标签: batch-file scripting cmd batch-processing