在命令行(CMD)中复制具有一定数量字符的文件名

Ste*_*agn 5 windows regex command-line dir cmd.exe

我需要将所有文本文件复制到一个名称为五个字符长的文件夹中。我知道这个命令是为了列出:

$ dir folder /B | findstr /R "^.....\.txt"
Run Code Online (Sandbox Code Playgroud)

但我想将上述命令列出的所有文件复制到不同的文件夹中。

Has*_*tur 5

我问(不仅是对我自己)“它不是很简单......”

copy  C:\ORIG_DIR\?????.txt C:\Dest_Dir
Run Code Online (Sandbox Code Playgroud)

感谢 G-Man,它powershell 中进行了测试,它可以工作,同时在cmd.exe 中,上述命令将复制每个匹配项最多五个字符,并且所有扩展名都以.txt.

问号(?)

使用问号代替名称中的单个字符。例如,如果您键入gloss?.doc,您将找到文件Glossy.doc 或Gloss1.doc 而不是Glossary.doc。

参考:


CBH*_*ing 2

这在 Batch 中是可能的,但在 PowerShell 中很容易。

ls | foreach { if (($_.BaseName.Length -eq 5) -and ($_.Extension -eq ".txt")) 
    { $_.CopyTo("\Name\Of\Target\Folder\" + $_.Name) }
Run Code Online (Sandbox Code Playgroud)

您还可以通过根据正则表达式检查文件名来完成此操作,但此方法效果很好。