所以基本上我有一个文件系统C:\ Test \ BaseLine。在BaseLine文件夹下我有很多文件夹,它可以是一个文件夹或15个文件夹,在这些文件夹中是图像文件。我想将INSIDE那些不包括BaseLine文件夹的文件夹中的所有图像复制到另一个位置,即每个图像末尾的C:\ Test \ Achieve Images with Date戳记为03-07-2014。
例如,我将拥有这样的文件夹系统:
BaseLine - 1.jpg,2.jpg
- > [Folder 123] - 3.jpg,4.jpg
- > [文件夹321] - 5.jpg,6.jpg
在我的脚本结束时,我应该让我的C:\ Test \ Achieve图像具有这样的图像:
实现图像 - 3_03-07-2014.jpg,4_03-07-2014.jpg,5_03-07-2014.jpg,6_03-07-2014.jpg
请注意它不包含任何BaseLine主文件夹图像。
到目前为止,我有一个这样的脚本:
cd /d "C:\Test\BaseLine\"
@SET DATE_FOLDER=%date:~7,2%-%date:~4,2%-%date:~10,4%
SET "ACHIEVE_DIR=C:\Test\Master Achieve"
for /d %%a in ("*") do xcopy "%%a\*.*" "%ACHIEVE_DIR%\" /s/h/e/k/f/c/y
PS:这段代码是在[user] foxidrive的帮助下完成的。再次感谢伙计,我有另一个问题!!
这可以工作,但不会将时间戳附加到每个图像文件的末尾 谢谢!
答案 0 :(得分:1)
您无法使用xcopy
执行此操作,但正如您在评论中所述,这会在复制前重命名文件。
此代码的前四行将为您提供XP Pro及更高版本中可靠的YY DD MM YYYY HH Min Sec变量。
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
SET "DATE_FOLDER=%YYYY%%MM%%DD%"
cd /d "C:\Test\BaseLine\"
SET "ACHIEVE_DIR=C:\Test\Master Achieve"
md "%ACHIEVE_DIR%" 2>nul
for /d %%a in (*) do (
for /r %%b in ("%%a\*.jpg") do ren "%%~b" "%%~nb - %DATE_FOLDER%%%~xb"
xcopy "%%a\*.jpg" "%ACHIEVE_DIR%\" /s/h/e/k/f/c/y
)
pause
修改代码以将所有*-tasty.jpg
个文件移至%ACHIEVE_DIR%
并对其进行日期戳记,然后删除C:\Test\BaseLine\
下包含所有剩余文件的原始文件夹但离开C:\Test\BaseLine\
内的文件完好无损。
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
SET "DATE_FOLDER=%YYYY%%MM%%DD%"
cd /d "C:\Test\BaseLine\"
SET "ACHIEVE_DIR=C:\Test\Master Achieve"
md "%ACHIEVE_DIR%" 2>nul
for /d %%a in (*) do (
for /r %%b in ("%%a\*-tasty.jpg") do move "%%~b" "%ACHIEVE_DIR%\%%~nb - %DATE_FOLDER%%%~xb"
rd /s /q "%%a"
)
pause
答案 1 :(得分:0)
这有效 -
@echo off
for /f "skip=1 delims=." %%i in ('wmic OS Get localdatetime') do set ts=%%i
set dt=%ts:~6,2%-%ts:~4,2%-%ts:~0,4%
set workdir=D:\test\baseline\
set newdir=D:\test\Achieve\
cd %workdir%
for /f "delims=" %%i in ('dir /b /s *.jpg') do call :search "%%i"
goto :eof
:search
set filepath=%~f1
set dirpath=%~dp1
set filename=%~n1
set fileextn=%~x1
if "%dirpath%" EQU "%workdir%" goto :eof
copy /y "%filepath%" %newdir%\%filename%_%dt%%fileextn% >nul 2>&1
:eof
测试输出 -
D:\>dir "d:\test\baseline", "d:\test\baseline\Folder 123", "d:\test\baseline\Folder 321"
Volume in drive D is New Volume
Volume Serial Number is B04C-AB59
Directory of d:\test\baseline
23/07/2014 21:24 <DIR> .
23/07/2014 21:24 <DIR> ..
23/07/2014 20:35 2 1.jpg
23/07/2014 20:35 2 2.jpg
23/07/2014 20:36 <DIR> Folder 123
23/07/2014 20:37 <DIR> Folder 321
2 File(s) 4 bytes
Directory of d:\test\baseline\Folder 123
23/07/2014 20:36 <DIR> .
23/07/2014 20:36 <DIR> ..
23/07/2014 20:36 2 3.jpg
23/07/2014 20:36 2 4.jpg
2 File(s) 4 bytes
Directory of d:\test\baseline\Folder 321
23/07/2014 20:37 <DIR> .
23/07/2014 20:37 <DIR> ..
23/07/2014 20:37 2 5.jpg
23/07/2014 20:37 2 6.jpg
2 File(s) 4 bytes
2 Dir(s) 7,037,329,408 bytes free
D:\>draft.bat
D:\test\baseline>cd\
D:\>dir d:\test\Achieve
Volume in drive D is New Volume
Volume Serial Number is B04C-AB59
Directory of d:\test\Achieve
23/07/2014 21:24 <DIR> .
23/07/2014 21:24 <DIR> ..
23/07/2014 20:36 2 3_23-07-2014.jpg
23/07/2014 20:36 2 4_23-07-2014.jpg
23/07/2014 20:37 2 5_23-07-2014.jpg
23/07/2014 20:37 2 6_23-07-2014.jpg
4 File(s) 8 bytes
2 Dir(s) 7,037,329,408 bytes free
干杯, ģ
编辑 - 这是基于您的原始问题。我还没有看到对另一个答案的评论。如果您需要更改,请告诉我。
答案 2 :(得分:0)
在运行draft.bat之前
D:\>dir "d:\test\baseline", "d:\test\baseline\Folder 123", "d:\test\baseline\Folder 321"
Volume in drive D is New Volume
Volume Serial Number is B04C-AB59
Directory of d:\test\baseline
23/07/2014 21:24 <DIR> .
23/07/2014 21:24 <DIR> ..
23/07/2014 20:35 2 1.jpg
23/07/2014 20:35 2 2.jpg
23/07/2014 20:36 <DIR> Folder 123
23/07/2014 20:37 <DIR> Folder 321
2 File(s) 4 bytes
Directory of d:\test\baseline\Folder 123
23/07/2014 20:36 <DIR> .
23/07/2014 20:36 <DIR> ..
23/07/2014 20:36 2 3-tasty.jpg
23/07/2014 20:36 2 3-not tasty.jpg
23/07/2014 20:36 2 4-tasty.jpg
23/07/2014 20:36 2 4-not tasty.jpg
2 File(s) 4 bytes
Directory of d:\test\baseline\Folder 321
23/07/2014 20:37 <DIR> .
23/07/2014 20:37 <DIR> ..
23/07/2014 20:37 2 5-tasty.jpg
23/07/2014 20:37 2 5-not tasty.jpg
23/07/2014 20:37 2 6-tasty.jpg
23/07/2014 20:37 2 6-not tasty.jpg
2 File(s) 4 bytes
2 Dir(s) 7,037,329,408 bytes free
D:\>draft.bat
在
D:\test\baseline>cd\
D:\>dir d:\test\Achieve
Volume in drive D is New Volume
Volume Serial Number is B04C-AB59
Directory of d:\test\Achieve
23/07/2014 21:24 <DIR> .
23/07/2014 21:24 <DIR> ..
23/07/2014 20:36 2 3_23-07-2014.jpg
23/07/2014 20:36 2 4_23-07-2014.jpg
23/07/2014 20:37 2 5_23-07-2014.jpg
23/07/2014 20:37 2 6_23-07-2014.jpg
4 File(s) 8 bytes
2 Dir(s) 7,037,329,408 bytes free
Directory of d:\test\baseline
23/07/2014 21:24 <DIR> .
23/07/2014 21:24 <DIR> ..
23/07/2014 20:35 2 1.jpg
23/07/2014 20:35 2 2.jpg
23/07/2014 20:35 2 3.jpg
23/07/2014 20:35 2 4.jpg
23/07/2014 20:35 2 5.jpg
23/07/2014 20:35 2 6.jpg
2 File(s) 4 bytes
请注意baseline
如何没有更多文件夹,因为它们在移动所有文件后都被删除了
non-tasty
- &gt;没有non-tasty
分机的基线
tasty
- &gt;实现没有tasty
但带有日期戳
我希望你现在能理解。 非常感谢