@ECHO OFF
SETLOCAL EnableDelayedExpansion
REM Set variables
SET SOURCE=C:\My WebEx Recordings
SET DEST=\\XXXRD12\c$\WebExVideoArchive
SET 7ZIP=C:\Program Files\7-Zip\7z.exe
REM Compress local files with 7zip
ECHO ---------------------------------------------------------
ECHO BEGINNING VIDEO COMPRESSION OPERATIONS
ECHO ---------------------------------------------------------
CD /D "%SOURCE%"
FOR %%f in ("*.wrf") DO (
SET FILENAME=%%~nf
ECHO Compressing !FILENAME!
"!7ZIP!" a -t7z -aoa "!FILENAME!.7z" "%%f"
)
REM Copy compressed files
ECHO ---------------------------------------------------------
ECHO COMPRESSION COMPLETE - BEGINNING COPY OPERATIONS
ECHO ---------------------------------------------------------
REM XCOPY <source> <destination> <options>
XCOPY "%SOURCE%\*.7z" "%DEST%" /Y /V /I /R
REM Confirm successful copy, then delete originals
IF %ERRORLEVEL% EQU 0 (
ECHO Copy Operation Successful. Removing Originals...
DEL /Q "%SOURCE%\*.*"
)ELSE (
ECHO Error Detected During Copying. Please try again...Press Any Key to Exit
Pause
)
我正在尝试编辑此代码,以便在运行批处理文件时根据文件格式的月份创建一个文件夹。我们运行了这个脚本很多但是忘了制作一个名为April的文件夹,现在我们将May与4月混在一起。
文件格式为
Username-R705-2011.05.04-1601-Disconnected.7z
我想知道是否有它可以关闭.04并为该月制作一个文件夹,因此它会自动将其放入需要进入的文件夹中,因此很容易按月搜索。
**如果我们不能使用我们格式化文件的格式来按文件创建排序,那么这是可能的。
答案 0 :(得分:1)
删除行REM XCOPY <source> <destination> <options>
下方(包括)的所有内容,并将其替换为以下内容:
for /F "usebackq delims=" %%a in (`dir /b "%SOURCE%\*.7z"`) do (
SET CURRENT_FILE=%%a
REM Extract the month.
for /F "usebackq tokens=3 delims=-" %%i in ('!CURRENT_FILE!') do (
SET CURRENT_FILE_DATE=%%i
SET FILE_MONTH=!CURRENT_FILE_DATE:~-2!
SET MONTH_DEST=!DEST!\!FILE_MONTH!
)
XCOPY "%SOURCE%\!CURRENT_FILE!" "!MONTH_DEST!\" /Y /V /I /R
REM Confirm successful copy, then delete original
IF %ERRORLEVEL% EQU 0 (
ECHO Copy Operation Successful. Removing Original...
DEL /Q "%SOURCE%\!CURRENT_FILE!"
)ELSE (
ECHO Error while copying "%SOURCE%\!CURRENT_FILE!.
)
)
此代码遍历匹配%SOURCE%\*.7z
的每个文件,提取月份,然后将文件复制到%DEST%\<month>
。月份只是文件名中的2位数字。
答案 1 :(得分:0)
好像你有一个文件夹,其中包含文件名中嵌入了不同数字月份值的文件。我正在考虑从每个文件中提取该值,但是使用具有12个不同XCOPY命令的强力通配符会更直接:
XCOPY "%SOURCE%\*-*-20??.??.01-*.7z" "%DEST%\01" /Y /V /I /R
XCOPY "%SOURCE%\*-*-20??.??.02-*.7z" "%DEST%\02" /Y /V /I /R
[...]
XCOPY "%SOURCE%\*-*-20??.??.12-*.7z" "%DEST%\12" /Y /V /I /R
我可能误解了这个问题,但如果你能对文件名做出一些假设,那就行了。