找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 59016|回复: 24

[文件操作] 批处理如何把文件名改为文件夹名?

[复制链接]
发表于 2021-8-16 17:13:01 | 显示全部楼层 |阅读模式
文件夹的名字是这样的:FL6B-727-I-2600-001-R1.1-LOOP DIAGRAM-626-LT-1626
中间有个空格 ,

我用下面命令试着echo这个文件夹下的一个pdf文件,但是出不来,pdf的名字是001.pdf
请问这是怎么回事,谢谢

我用的命令是下面这个
  1. for /f  %%i in ('dir /b /s /a-d *.pdf') do (echo  %%i)
复制代码
%%i加引号不加引号都出不来,
可是我在cmd命令下用dir /b /s /a-d  这个命令就可以输出,请问这是怎么回事呀,

谢谢
发表于 2021-8-16 17:40:48 | 显示全部楼层
  1. for /f "delims=" %%i in ('dir /b /s /a-d *.pdf') do (echo  %%i)
复制代码
回复 1# swanseabrian
 楼主| 发表于 2021-8-16 18:11:17 | 显示全部楼层
回复 2# qixiaobin0715


我用上面代修改文件名空格后面的没加上去,

我用下面的代码
  1. @echo on&setlocal enabledelayedexpansion
  2. for /f  "delims="  %%i in ('dir /b /s /a-d *.pdf') do
  3. (set "fn=%%~dpi"
  4. for /f "delims=" %%j in ("!fn:~,-1!")  do  
  5. ren "%%i" "%%~nj-%%~xi")
复制代码
文件 夹名是这样的
FL6B-727-I-2600-004-R1.1-LOOP DIAGRAM-626-PT-1052
我想把文件 名也变成文件夹的名字,但是重命名后是这样的,FL6B-727-I-2600-004-R1,只有一半,这是怎么回事呢
 楼主| 发表于 2021-8-16 18:12:26 | 显示全部楼层

文件名改成文件夹名,文件夹名包含空格

我用上面代修改文件名空格后面的没加上去,

我用下面的代码
  1. @echo on&setlocal enabledelayedexpansion
  2. for /f  "delims="  %%i in ('dir /b /s /a-d *.pdf') do
  3. (set "fn=%%~dpi"
  4. for /f "delims=" %%j in ("!fn:~,-1!")  do  
  5. ren "%%i" "%%~nj-%%~xi")
复制代码
文件 夹名是这样的
FL6B-727-I-2600-004-R1.1-LOOP DIAGRAM-626-PT-1052
我想把文件 名也变成文件夹的名字,但是重命名后是这样的,FL6B-727-I-2600-004-R1,只有一半,这是怎么回事呢
 楼主| 发表于 2021-8-16 18:32:48 | 显示全部楼层
回复 2# qixiaobin0715


    "delims=" 这个是以空格分割的意思吗,请问,
发表于 2021-8-16 18:39:28 | 显示全部楼层
回复 1# swanseabrian

以后请不要同一问题发2个帖子,这样会占用宝贵的资源:
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /s /a-d *.pdf') do (
  3. for %%j in ("%%~dpi.") do ren "%%i" "%%~nxj%%~xi"
  4. )
  5. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
swanseabrian + 1 非常厉害

查看全部评分

发表于 2021-8-16 18:43:13 | 显示全部楼层
回复 4# swanseabrian
说反了,不加delims才是默认空格分隔。
 楼主| 发表于 2021-8-16 19:01:06 | 显示全部楼层
回复 2# qixiaobin0715


    我试了一下你这代码,没有运行起来,也不知道哪里的问题
 楼主| 发表于 2021-8-16 20:29:48 | 显示全部楼层
回复 2# qixiaobin0715


   可以了,没问题,nj不要吗, nxj就没问题了,这是什么原理呀,谢谢
 楼主| 发表于 2021-8-16 20:42:50 | 显示全部楼层
回复 2# qixiaobin0715


    "%%~dpi.,这后面加个点啥意思呀,请问
发表于 2021-8-16 21:55:10 | 显示全部楼层
回复 4# swanseabrian
1.循环变量替换增强:循环变量替换增强无论是变量代表文件名、文件夹名还是字符串,你都可把它看成文件名,如果只取%~nI时,就会把最后的点号前的部分当成文件名,而把点号及后面的部分当成文件扩展名看待。所以这里要取%~nxI,否则就会被分割为两部分。
2.至于"%%~dpi.,后面一个点表示文件所在文件夹,两个点表示父文件夹。

评分

参与人数 1技术 +1 收起 理由
swanseabrian + 1 主要是第二个,第一个写的时候都写上就行了 ...

查看全部评分

 楼主| 发表于 2021-8-16 22:05:01 | 显示全部楼层
  1. for /f  "delims="  %%i in ('dir /b /s /a-d *.pdf') do (set "fn=%%~dpi"
  2. for /f "delims=" %%j in ("!fn:~,-1!") do  ren "%%i" "%%~nj%%~xi")
复制代码
回复 6# qixiaobin0715

跟我这fn,-1的作用不一样吗?
发表于 2021-8-16 22:19:13 | 显示全部楼层
回复 4# swanseabrian


推荐阅读:批处理for命令教程
http://bbs.bathome.net/thread-31727-1-1.html

批处理for命令从入门到精通以及配套练习题
http://bbs.bathome.net/thread-2189-1-1.html
http://bbs.bathome.net/thread-2336-1-1.html
发表于 2021-8-17 06:40:54 | 显示全部楼层
回复 12# swanseabrian
当然可以。但是这样就要开变量延迟;嵌套for语句可直接用,不要带参数;%%~nj——%%~nxj。这样效率要高一些。

评分

参与人数 1技术 +1 收起 理由
swanseabrian + 1 谢谢

查看全部评分

 楼主| 发表于 2021-8-17 09:35:40 | 显示全部楼层
回复 13# Batcher


    好的,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 00:25 , Processed in 0.033798 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表