我在练习中受阻......我们有下一个结构:
1)公司/公司A / 1.KYC / data17-07-05.xls
2)公司/公司B / 1.KYC / data17 / 08 / 04.xls
3)公司/公司C / 1.KYC / data17 / 08 / 08.xls& docXLS.xls
4)等。
我只想复制1号和2号文件夹而不是3号文件夹...(所以只有我们有1个文件的文件夹而不是2个文件夹。)
我不知道如何开始......
我有下一个代码,但我迷路了:
@echo off
setlocal disabledelayedexpansion
set "folder=%~1"
if not defined folder set "folder=C:\Users\Albert\Desktop\backup2\company01\"
for /d %%a in ("%folder%\*") do (
set "size=0"
for /f "tokens=3,5" %%b in ('dir /-c /a /w /s "%%~fa\*" 2^>nul ^| findstr /b /c:" "') do if "%%~c"=="" set "size=%%~b"
setlocal enabledelayedexpansion
if !size! GTR 0 xcopy "C:\Users\Albert\Desktop\backup2\company01\"%%~nxa "C:\Users\Albert\Desktop\backup2\"%%~nxa /e /i
echo(%%~nxa # !size!
endlocal
)
pause
我是批次语言的初学者,所以如果有可能帮助我的话......非常感谢!
答案 0 :(得分:0)
以下假设,根据您指定的数据,.xls
文件将始终位于名为1.KYC
的子目录中:
@Echo Off
SetLocal DisableDelayedExpansion
Set "folder=%~1"
If Not Defined folder Set "folder=%UserProfile%\Desktop\backup2\company01"
If Not Exist "%folder%\" Exit/B
For /F "Delims=|" %%A In ('Dir/B/S/AD-S-L "%folder%\1.KYC"') Do (Set "_="
For /F "Skip=6Tokens=3" %%B In ('RoboCopy/L /NFL /NDL /NJH "%%A" Null *.xls'
) Do If "%%B"=="1" If Not Defined _ (Set "_=T"
XCopy "%%A" "%UserProfile%\Desktop\backup2\%%~nxA" /E /I))
但它有一个已知问题:
RoboCopy
命令将匹配以.xls
开头的任何文件扩展名,这意味着您希望它与目录只包含一个.xls
文件,但其中还有一个.xlsx
文件,它将无法正常运行。