【问题标题】:Batch File move files base on last characters of their name批处理文件根据名称的最后一个字符移动文件
【发布时间】:2019-06-14 13:17:20
【问题描述】:

bat文件是否可以搜索文件夹和文件以及
如果它找到命名为文件夹名称一部分的文件,则将该文件移动到该文件夹​​中。

例如:

D:\
└───Test
    │   161136.pdf
    │   23752.pdf
    │   24334.pd
    │
    ├───017-161136
    ├───021-23752
    ├───120-24334
    └───1560-4334

文件名称为 4 到 6 个字符,文件夹包含文件名。

预期结果

D:\
└───Test
    ├───017-161136
    │       161136.pdf
    │
    ├───021-23752
    │       23752.pdf
    │
    ├───120-24334
    │       24334.pdf
    │
    └───1560-4334

【问题讨论】:

标签: batch-file directory move


【解决方案1】:

我没有看到使用任何 PowerShell 有太大区别

## Q:\Test\2019\06\14\SO_56599031.ps1
PushD D:\Test
Get-ChildItem *-* -Directory | ForEach-Object {
    Move-Item ("{1}*" -f ($_.Name.split('-')[1])) -Dest $_.Name -WhatIf
}
PopD

或批处理来解决任务

:: Q:\Test\2019\06\14\SO_56599031.cmd
@Echo off
Pushd D:\Test
for /F "tokens=1* delims=-" %%A in ('Dir /B /AD *-*') do (
  move "%%~B*" "%%A-%%B"
)
PopD

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多