Board logo

标题: [文件操作] 求助BAT代码把文件夹的EXCEL剪切到另一个文件夹 [打印本页]

作者: 小嘟嘟    时间: 3 天前 16:23     标题: 求助BAT代码把文件夹的EXCEL剪切到另一个文件夹

我桌面上有一个文件夹1,里面是各种命名的EXCEL的表格,例如AAE...BAC..等等
另一个文件夹2,里面是命名好的各种子文件夹(比如AAE...BAC...前几位是相同的),子文件AAE里面又分月和日期
能不能根据文件夹1里面的EXCEL的命名和创建的时间,自动剪切到文件夹2中相同的名字的文件夹里面的日期中。可以实现嘛
作者: flashercs    时间: 3 天前 17:46

保存为test.bat,脚本编码是ANSI.请先测试再使用.
  1. @echo off
  2. cd /d "%~dp0"
  3. set "dir1=文件夹1"
  4. set "dir2=文件夹2"
  5. REM 前缀长度
  6. set "prefix_length=3"
  7. md "%dir1%" 2>nul
  8. md "%dir2%" 2>nul
  9. powershell -c "gci -literal $env:dir1 -filter *.xls|where{$_ -is [IO.FileInfo]}|Move-Item -Destination {$baseName=$_.BaseName;$prefix=$baseName.Substring(0,[Math]::Min($baseName.Length,$env:prefix_length));$sdtm=$_.CreationTime.ToString('yyyyMMdd');$di=[IO.Directory]::CreateDirectory($env:dir2+'\'+$prefix+'\'+$sdtm);$di.FullName;} -Verbose;"
  10. pause
复制代码

作者: aloha20200628    时间: 3 天前 18:48

本帖最后由 aloha20200628 于 2025-2-2 18:50 编辑

回复 1# 小嘟嘟

须明确文件夹2下的日期子文件夹的命名格式,例如 2025-1-2 还是 2025-01-02 还是 1-2-2025?

作者: Five66    时间: 3 天前 18:51

请给一个真实的例子说明一下你的需求吧,比如操作之前是怎样的,操作之后变成啥样?
如果需要上传文件,请用使用网盘。
如果需要上传截图,可以找个图床,例如:
http://www.bathome.net/thread-60985-1-1.html
作者: 小嘟嘟    时间: 3 天前 19:25

回复 3# aloha20200628


    1-2就可以啦
作者: 小嘟嘟    时间: 3 天前 19:26

回复 2# flashercs


    我试下看行不行
作者: aloha20200628    时间: 3 天前 20:40

本帖最后由 aloha20200628 于 2025-2-2 20:46 编辑

回复 5# 小嘟嘟

以下代码存为 test.bat 运行,其中变量 %d1%,%d2% 分别定义源目录(如 c:\1,可修改)和目标目录(如 c:\2,可修改)
运行结果会将源目录中的 *.xls 文件(如 c:\1\a.xls,其最后修改日期=2025-02-02)移动至目标目录下同名子目录中的相应日期子目录(如 c:\2\a\2-2 子目录,假设该子目录已存在)
  1. @echo off &set "d1=c:\1" &set "d2=c:\2"
  2. cd /d "%d1%" &for /f "delims=" %%F in ('dir /b/a-d "%d1%\*.xls" ') do (
  3.    set "F=%%F" &set "nF=%%~nF" &setlocal enabledelayedexpansion
  4.    set "t=%%~tF" &set/a "m=!t:~5,2!,d=!t:~8,2!" &set "t=!m!-!d!"
  5.    if exist "%d2%\!nF!\!t!" move /y "!F!" "%d2%\!nF!\!t!\"
  6.    endlocal)
  7. pause&exit/b
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2