So kopieren Sie Dateien mit nur einer Erweiterung und nicht doppelt in der Eingabeaufforderung

423
user935892

Ich muss nur kopieren .jpgund nicht .jpg.jpgaus einem bestimmten Ordner.

Wenn ich copy c:\data\*.jpg D:\backup\sowohl eine .jpgals auch eine .jpg.jpgbenannte Datei kopiere, bin ich nicht sicher, wie ich die doppelten Erweiterungsnamen-Dateien aus dem Kopiervorgang auslassen kann.

Hinweis: Ich darf diese .jpg.jpgDateien nicht umbenennen oder löschen

1
Anstatt hochentwickelte Synchronisierungsprodukte einzusetzen, ist es möglicherweise einfacher, alle `.jpg'-Dateien zu kopieren und dann die` .jpg.jpg`-Dateien zu löschen. harrymc vor 6 Jahren 1

2 Antworten auf die Frage

1
Pimp Juice IT

Sie können eine for- Schleife verwenden, um Dateien im Verzeichnis zu iterieren und durch Variablensubstitutionen zu prüfen, ob jeder iterierte " Dateinamensabschnitt nur ohne eigene Erweiterung " keine andere Erweiterung ( .jpg) enthält. Dateien, die keine zusätzliche Erweiterung in ihrem Dateinamen enthalten, werden mit dem Befehl xcopy kopiert, wobei die bedingte if- Logik entsprechend verwendet wird.

Batch-Skript

@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 

Weitere Ressourcen

  • Zum
  • Variablensubstitutionen (FOR /?)

    Darüber hinaus wurde die Ersetzung von FOR-Variablenreferenzen verbessert. Sie können jetzt die folgende optionale Syntax verwenden:

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

  • XCOPY
0
Baldrickk

Verwenden der Powershell anstelle der Eingabeaufforderung:

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

Dies setzt natürlich voraus, dass viele Dateien data[something].jpgin C: und nicht in einem Verzeichnisbaum mit Bildern enthalten sind.

Wenn Sie eine rekursive Kopie von jpgs in C: \ Data \ ohne Dateien mit der Endung .jpg.jpg:

$source = 'C:\data' $dest = 'D:\backup' $exclude = @('*.jpg.jpg') Get-ChildItem $source -Recurse -Exclude $exclude -Filter *.jpg | Copy-Item -Destination  

(schamhaft aus dieser Antwort auf SO gestohlen und modifiziert )