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

[文件操作] [已解决]批处理如何将多个文件夹移动到以该文件夹名开头非中文字符串命名的文件夹里

本帖最后由 kaze 于 2016-10-27 19:13 编辑

批处理如何将多个文件夹移动到以该文件夹名开头部分非中文字符串命名的文件夹里
批处理以英文中文作为分隔符整理图片文件夹:

大家好,当前目录现有一堆图片文件夹,
BU love图片(计80.5 )
BU X10 花式图片(共8)
BK-e5 图样 PIC(9.5)
RD pic3(5.0) 图片(共90)原图
WT W100图片(计9)原图

如何以前面的英文(或数字或空格)创建文件夹,移动当前目录子目录到相应的编码文件夹
BU love
BU X10
BK-e5
RD pic3(5.0)
WT W100
(编码以-分隔符)


举例脚本(只能有两个空格,三个以上出错,英文中文没有进行分隔)
  1. @echo off
  2. pause
  3. for /f "tokens=1-3 delims= " %%a in ('dir /b/ad ') do (
  4. echo %%a %%b %%c
  5. if not exist "%%a-%%b" md "%%a-%%b"
  6. move /Y "%%a %%b %%c" "%%a-%%b"
  7. )
  8. pause
复制代码
1

评分人数

^_^谢谢

TOP

回复 5# kaze


我只能猜测「移动到同一个文件夹」的意思是,子目录的非中文前缀有重复的。
如果是这样,报错内容应该是试图建立已存在文件夹,就用原来的命令,忽略错误就可以了,不影响效果。

这样应该可以不报错:
  1. PowerShell -c "ls | ? { $_.PSIsContainer } | ForEach { if (-Not (Test-Path ($NewName = $_.Name -replace ' *[^ -~].*', '' -replace ' +', '-'))) { md $NewName }; move $_ $NewName }"
复制代码
1

评分人数

TOP

回复 4# DiamondbacK
仅移动当前脚本所在目录的一级子目录,移动到当前目录创建的编号(文件夹名开头部分非中文字符串命名)文件夹里面

TOP

本帖最后由 DiamondbacK 于 2016-10-27 17:34 编辑

回复 3# kaze

「移动到同一个文件夹」是什么意思?
当前文件夹下除了这些要移动的子文件夹还有什么?请介绍清楚。

TOP

回复 2# DiamondbacK
你好,之前的代码是可以运行的,就是移动到同一个文件夹时有一长串错误提示,不知道为什么修改版运行出错了
  1. PowerShell -c "ls | ? { $_.PSIsContainer } | ForEach { md ($NewName = $_.Name -replace ' *[^ -~].*', '' -replace ' +', '-'); move $_ $NewName }"
复制代码

TOP

本帖最后由 DiamondbacK 于 2016-10-27 17:05 编辑
  1. $ dir /b /ad | PowerShell -c "$input | ForEach { move $_ (md ($_ -replace ' *[^ -~].*', '' -replace ' +', '-')) }"
复制代码
  1. $ PowerShell -c "ls | ? { $_.PSIsContainer } | ForEach { move $_ (md ($_ -replace ' *[^ -~].*', '' -replace ' +', '-')) }"
复制代码
1

评分人数

TOP

返回列表