[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 如何将多个文件夹里的文件分别复制到不同目录里并以目标目录里的文件名称重命名

本帖最后由 pcl_test 于 2018-4-2 21:49 编辑

求助:请高手帮助,一个比较麻烦的改名的批处理,不知道怎么弄了
为什么这么要求,因为两个目录中的XML一个是加密的一个是未加密的。生成的未加密的XML文件要按原加密的XML文件名命名,才可以进行下面的操作。

比如
D:\A\a1\aaa.xml   D:\A\a2\ccc.xml  ……以此类推
D:\B\a1\bbb.xml  D:\B\a2\ddd.xml  ……以此类推
首先把D:\B\a1\bbb.xml 文件名改成对应D:\A\a1\aaa.xml的文件名    即改成D:\B\a1\aaa.xml
其它的以此类推

最后将改过名的XML文件按对应的目录拷贝到覆盖D:\A\下的相应子目录中的XML文件。
请高手帮忙,谢谢。最好有相应的注释

本帖最后由 yhcfsr 于 2018-4-2 18:11 编辑

对于a1,a2,……这样的文件夹,当且仅当每个文件夹下有一个文件时,才能根据a1,a2……这样的文件夹名找到对应的未加密文件,否则会混乱,这点你要补充,着重申明。
  1. @echo off
  2. set "加密目录=D:\test\A"
  3. set "未加密目录=D:\test\B"
  4. for /f "delims=" %%a in ('dir /a-d/s/b "%加密目录%\*.txt"') do (
  5. set "diry=%%~dpa"
  6. setlocal enabledelayedexpansion
  7. for /f "delims=" %%b in ("!diry:~,-1!") do set "diry=%%~nb"
  8. for /f "delims=" %%c in ('dir /a-d/s/b "%未加密目录%\!diry!\*.txt"') do ren "%%c" "%%~nxa"
  9. endlocal
  10. )
  11. pause&exit
复制代码

TOP

回复 2# yhcfsr

在出差才回来。非常感谢,研究一下。

TOP

感谢没问题了

TOP

@echo off
set "加密目录=G:\test2\A"
set "未加密目录=G:\test2\B"

rem 循环加密目录下的txt
for /f "delims=" %%a in ('dir /a-d/s/b "%加密目录%\*.xml"') do (
        echo %%a
        echo %%~dpa
        rem 把%%a的目录赋值给diry
        set  "diry=%%~dpa"
        setlocal enabledelayedexpansion
       
        for /f "delims=" %%b in ("!diry:~,-1!") do set "diry=%%~nb"
        echo !diry!
       
        for /f "delims=" %%c in ('dir /a-d/s/b "%未加密目录%\!diry!\*.xml"') do (
               
                        echo "开始处理未加密"
                        echo %%c
                        rem 重命名
                        ren "%%c" "%%~nxa"
                        echo %%~nxa
                        rem 复制文件
                        Xcopy /y %未加密目录%\!diry!\%%~nxa  "%加密目录%\!diry!\"
               
               
        )
       
        endlocal

TOP

返回列表