如何复制只有1个扩展名的文件,而不是在命令提示符下复制


1

我只需要复制 .jpg 并不是 .jpg.jpg 从特定文件夹。

当我做的时候 copy c:\data\*.jpg D:\backup\.jpg.jpg.jpg 命名文件被复制,我不知道如何从复制操作中省略双扩展命名文件。

注意: 我不允许重命名或删除它们 .jpg.jpg


1
复制所有内容可能更简单,而不是采用复杂的同步产品 .jpg 文件,然后删除 .jpg.jpg 那些。
harrymc

Answers:


0

使用powershell而不是命令提示符:

Copy-Item C:\data*.jpg -Destination D:\backup -Exclude "*.jpg.jpg"

这当然假设您有很多名为的文件 data[something].jpg 在C:中,而不是包含图像的目录树。

如果你想要一个递归副本 jpg 在C:\ Data \中没有以。结尾的文件 .jpg.jpg

$source = 'C:\data'
$dest = 'D:\backup'
$exclude = @('*.jpg.jpg')
Get-ChildItem $source -Recurse -Exclude $exclude -Filter *.jpg | Copy-Item -Destination {Join-Path $dest $_.FullName.Substring($source.length)}

(可耻地被盗和修改 关于SO的答案


1

你可以使用 对于 循环迭代目录中的文件并使用 变量替换 检查每次迭代“ 文件名部分只有没有它自己的扩展名 “不包含其他扩展名( .jpg )。将在文件名中包含不包含其他扩展名的文件 XCOPY 命令使用条件 如果 相应的逻辑。

批处理脚本

@ECHO ON

SET "srcPath=c:\data"
SET "copyPath=D:\backup"

for %%a in ("%srcPath%\*.jpg") do (
    for %%b in ("%%~dpna") do if [%%~xb]==[] XCOPY /F /Y "%%~a" "%copyPath%\"
    )
PAUSE
EXIT

更多资源

  • 对于
  • 变量替换(FOR /?)

    另外,替换了FOR变量引用   增强。您现在可以使用以下可选语法:

    %~I         - expands %I removing any surrounding quotes (")
    %~nI        - expands %I to a file name only
    %~xI        - expands %I to a file extension only
    
  • 如果

  • XCOPY
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.