. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 回复
 
主题工具
jxjjmjz
 
jxjjmjz 的头像
核心会员
 
资 料:
注册日期: Oct 2002
帖子: 3,590 声望值: 5
精华: 0,解答: 31
#1 旧 2018-07-05, 15:38:01 默认 已解答: 【求助】批处理之基础问题:根据文件名创建同名文件夹
jxjjmjz 当前离线  

实在是不会批处理,ps也不会。都说要好好学一下的。
工作上很多pdf和word之类文件,希望根据文件名创建同名文件夹,
并移动这个文件到创建的文件夹中。
咋写cmd。
回复时引用此帖
最佳解答为:namejm
代码:
@echo off
for %%i in (*.*) do (
  if not "%%i" == "%~nx0" (
    md "%%~ni" 2>nul
    move "%%i" "%%~ni\%%i"
  )
)
pause
为了防止出现问题,最好备份数据后再使用。
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,248 声望值: 3
精华: 18,解答: 76
#2 旧 2018-07-06, 14:59:00 默认
namejm 当前离线  

代码:
@echo off
for %%i in (*.*) do (
  if not "%%i" == "%~nx0" (
    md "%%~ni" 2>nul
    move "%%i" "%%~ni\%%i"
  )
)
pause
为了防止出现问题,最好备份数据后再使用。


TotalCommder、EveryThing、batch、AutoHotKey、EverEdit
精通Word、Excel、PPT的安装与卸载
熟练掌握VB、C++、SQL的缩写
回复时引用此帖
zjsheng
 
zjsheng 的头像
超级会员
 
资 料:
注册日期: Mar 2002
帖子: 1,953 声望值: 3
精华: 1,解答: 1
#3 旧 2018-07-06, 19:34:03 默认
zjsheng 当前离线  

进来学习一下。


祈愿天下和顺,日月清明,灾厉不起,风调雨顺,国泰民安,社会祥和。南无阿弥陀佛!
回复时引用此帖
samson88
 
samson88 的头像
热心会员
 
资 料:
注册日期: May 2002
帖子: 2,324 声望值: 2
精华: 2,解答: 37
#4 旧 2018-07-06, 20:13:02 默认
samson88 当前离线  

nx0是什么意思?

发自 iPhone 7 使用 CCF客户端


在中国,有什么事情解释不了的,一想到“”字就迎刃而解了。
回复时引用此帖
kfkhfj
 
kfkhfj 的头像
核心会员
 
资 料:
注册日期: Mar 2012
帖子: 2,245 声望值: 4
精华: 0,解答: 36
#5 旧 2018-07-06, 21:43:06 默认
kfkhfj 当前离线  

引用:
作者: samson88 查看帖子
nx0是什么意思?

发自 iPhone 7 使用 CCF客户端
%0 就是本BAT的绝对路径。
%~nx ::n文件名 ::x扩展名。
所以说%~nx 就是,扩充到文件名和扩展名。

说的明白点,%~nx 就是获取文件名和扩展名。
回复时引用此帖
zjsheng
 
zjsheng 的头像
超级会员
 
资 料:
注册日期: Mar 2002
帖子: 1,953 声望值: 3
精华: 1,解答: 1
#6 旧 2018-07-06, 23:25:48 默认
zjsheng 当前离线  

%~nx0,代表不带路径的批处理文件名本身。
回复时引用此帖
jxjjmjz
 
jxjjmjz 的头像
核心会员
 
资 料:
注册日期: Oct 2002
帖子: 3,590 声望值: 5
精华: 0,解答: 31
#7 旧 2018-07-07, 07:20:56 默认
jxjjmjz 当前离线  

引用:
作者: namejm 查看帖子
[code] echo offfor %%i in (*.*) do ( if not "%%i" == "%~nx0" ( md "%%~ni" 2>nul move "%%i" "%%~ni\%%i&quo......
感谢大神出手,又学到知识。
回复时引用此帖
zjsheng
 
zjsheng 的头像
超级会员
 
资 料:
注册日期: Mar 2002
帖子: 1,953 声望值: 3
精华: 1,解答: 1
#8 旧 2018-07-07, 12:47:19 默认
zjsheng 当前离线  

2楼大神的脚本,是批处理与文件在同一目录下的。
假如要处理脚本之下的二级、三级目录里的文件,又怎么编写呢?
回复时引用此帖
zjsheng
 
zjsheng 的头像
超级会员
 
资 料:
注册日期: Mar 2002
帖子: 1,953 声望值: 3
精华: 1,解答: 1
#9 旧 2018-07-08, 11:26:44 默认
zjsheng 当前离线  

引用:
作者: zjsheng 查看帖子
2楼大神的脚本,是批处理与文件在同一目录下的。
假如要处理脚本之下的二级、三级目录里的文件,又怎么编写呢?
鼓捣鼓捣,找到了方法:
代码:
@echo off
for /f "delims=" %%i in ('dir /s /b /a-d') do (
    if /i "%%~fi" neq %0 (
    md "%%~ni" 2>nul
    move /y "%%~fi" "%%~ni\"
  )
)
exit
运行上面脚本后,所有同级、下级目录里的文件都被建立同名文件夹,并被移到了新建同名文件夹内(文件夹与批处理同级)。

此帖于 2018-07-08 16:40:06 被 zjsheng 编辑. .
回复时引用此帖
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,248 声望值: 3
精华: 18,解答: 76
#10 旧 2018-07-08, 14:00:19 默认
namejm 当前离线  

To zjsheng:
  加双引号是为了防止文件路径带空格或 & 字符,如果文件路径中带空格的话,你的代码会出错,需要把 for /f %%i in …… 添加一个选项,改成 for /f "delims=" %%i in ……
回复时引用此帖
zjsheng
 
zjsheng 的头像
超级会员
 
资 料:
注册日期: Mar 2002
帖子: 1,953 声望值: 3
精华: 1,解答: 1
#11 旧 2018-07-08, 16:39:12 默认
zjsheng 当前离线  

引用:
作者: namejm 查看帖子
To zjsheng:  加双引号是为了防止文件路径带空格或 & 字符,如果文件路径中带空格的话,你的代码会出错,需要把 for /f %%i in …… 添加一个选项,改成 for /f "delims=" %......
果真如此,谢大神指教!
回复时引用此帖
发表新主题 回复

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 06:18:51.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号