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

[文件操作] 请教,批处理根据文件夹名称分类复制到对应文件夹

[复制链接]
发表于 2018-12-17 14:56:26 | 显示全部楼层
支持文件夹名 xxxxx-xxxxx_xxx_xxxx-数字-xxxx_xxxx等,如有多段数字则以最后一段数字为文件夹。分隔线为 “-" 或"_"  把脚本和A/B文件夹放同一目录

  1. gci "$Pwd\A" -Directory|%{
  2.         foreach ($Number in @($_.name.Split('_-'))) {
  3.                 $err=$null
  4.                 foreach ($i in ($Number.GetEnumerator())){
  5.                         if (![Char]::IsDigit("$i")){$err='yes'}
  6.                 }
  7.                 if (!$err){$Folder=$Number}
  8.         }
  9.         if([Io.Directory]::Exists("$Pwd\B\$Folder")){
  10.                 Get-Item "$($_.fullname)\*"|%{
  11.                         Copy $_.Fullname -Dest "$Pwd\B\$Folder" -Recurse -Force
  12.                         if ($?){Write-host '复制文件:'$_.Fullname -fore Magenta}
  13.                 }
  14.         }
  15. }
复制代码
若在命令行中运行脚本,不需要运行管理员模式,用普通用户模式即可。若运行提示没有权限,则导入下面的注册表即可。可以在脚本上点右键,然后选择在powershell 中运行。

注册表 提权  xxx.reg

  1. Windows Registry Editor Version 5.00
  2. [HKEY_CURRENT_USER\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell]
  3. "ExecutionPolicy"="Bypass"
复制代码
 楼主| 发表于 2018-12-17 15:51:50 | 显示全部楼层
回复 15# xczxczxcz


    厉害,膜拜大神!

厚着脸再问一下,可否有办法让我手动填写AB的路径,然后再执行复制命令。
发表于 2018-12-17 17:04:55 | 显示全部楼层
本帖最后由 xczxczxcz 于 2018-12-17 17:06 编辑

回复 17# cxy03791695766

先运行脚本 按提示操作, 文件名长度不能超过80个字符。脚本可放任意位置。若手工输入需要完整路径。

  1. $A文件夹=Read-host -Prompt "拖入 A 文件夹 并回车"
  2. $B文件夹=Read-host -Prompt "拖入 B 文件夹 并回车"
  3. gci "$A文件夹" -Directory|%{
  4.         foreach ($Number in @($_.name.Split('_-'))) {
  5.                 $err=$null
  6.                 foreach ($i in ($Number.GetEnumerator())){
  7.                         if (![Char]::IsDigit("$i")){$err='yes'}
  8.                 }
  9.                 if (!$err){$Folder=$Number}
  10.         }
  11.         if([Io.Directory]::Exists("$B文件夹\$Folder")){
  12.                 Get-Item "$($_.fullname)\*"|%{
  13.                         Copy $_.Fullname -Dest "$B文件夹\$Folder" -Recurse -Force
  14.                         if ($?){Write-host '复制文件:'$_.Fullname -fore Magenta}
  15.                 }
  16.         }
  17. }
  18. pause
复制代码
==============enjoy================
 楼主| 发表于 2018-12-17 17:39:33 | 显示全部楼层
回复 18# xczxczxcz


    完美!太感谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 22:45 , Processed in 0.016772 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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