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

[文件操作] BAT批处理如何重命名文件并转移到特定文件夹里

我有许多文件,扩展名不定(有txt,pdf,doc,mp3,mp4,avi,等等),现在每个文件放在一个文件夹里,比方说文件夹的名字为A<空格>B,现在我想把这个文件夹里的文件改名为B.***(保留原扩展名),然后将这个文件放到A文件夹里,现在我要批量实现上面的步骤,请问如何用批处理实现?

  1. @echo off
  2. set "folderSrc=A B"
  3. set "filePrefix=%folderSrc:* =%"
  4. for /f %%i in ("%folderSrc%") do (
  5.     set "folderDst=%%i"
  6. )
  7. if not exist %folderDst%\ (
  8.     md %folderDst%
  9. )
  10. for /r %%i in ("%folderSrc%\*") do (
  11.     ren "%%i" "%filePrefix%%%~xi"
  12.     move /y "%%~dpi%filePrefix%%%~xi" %folderDst%
  13. )
复制代码

TOP

回复 2# DAIC

我说的A B只是一个比方,现在我不知道我的文件夹具体的名字,只知道形式是A B(我有很多这种形式的文件夹),如何才能完成呢?
而且如果我有A B,A C两个文件夹,如何让改名后的文件都放进A文件夹呢?

TOP

  1. @echo off
  2. for /d %%i in (*) do (
  3.     for /f "tokens=1*" %%a in ("%%i") do (
  4.         md %%a 2>nul
  5.         copy "%%i\*.*" "%%a\%%b.*" >nul
  6.     )
  7.     rd "%%i" /q /s
  8. )
  9. pause
复制代码

TOP

回复 3# ltlt2006
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%a in ("* *") do (
  4.     set "folderSrc=%%a"
  5.     set "filePrefix=!folderSrc:* =!"
  6.     for /f %%i in ("!folderSrc!") do (
  7.         set "folderDst=%%i"
  8.     )
  9.     if not exist !folderDst!\ (
  10.         md !folderDst!
  11.     )
  12.     for /r %%i in ("!folderSrc!\*") do (
  13.         ren "%%i" "!filePrefix!%%~xi"
  14.         move /y "%%~dpi!filePrefix!%%~xi" !folderDst!\
  15.     )
  16. )
复制代码

TOP

回复 4# terse

谢谢 可以用, 就是如果格式不严格的话,会被误删。

TOP

回复 5# DAIC


谢谢 可以用了

TOP

回复 6# ltlt2006
讲遍历条件 改成 "* *" 这样呢?或是加个判断

TOP

返回列表