2017-03-15 2 views
0

Ich erstelle Probleme bei der Aufnahme mehrerer Computer mit einer Software, die eine Berührungskalibrierung durchführt. Die Software erstellt .jpg Dateien, die ich kopieren und analysieren muss, aber verschiedene Benutzer haben die Software an verschiedenen Orten installiert, so dass sie nach Dateien suchen müssen. Beispiel für eine Datei wäre 002CAL000211.jpg.Skript zum Suchen einer bestimmten Datei (Name und Typ) und zum Kopieren an einen neuen Speicherort

Ich möchte eine Batch-Datei erstellen, die folgendes tun:

Suchen gesamte C: Laufwerk mit (Unterordner) und automatisch kopieren bestimmte Dateien auf einen Satz Verzeichnis auf der Grundlage der folgenden Kriterien:

  • Dateiname den Namen "CAL"
  • Dateityp enthält, ist ".jpg"

Vorzugsweise möchte ich, dass die Dateien in das Stammverzeichnis eines gemounteten USB-Laufwerks kopiert werden.

Jede Hilfe wäre sehr willkommen!

Danke!

+0

solches Skript einfach zu schaffen. Aber es wird sehr langsam sein. Wahrscheinlich gibt es bestimmte Ordner, in denen die Suche konzentriert werden kann? Uns es von einem Programm erstellt? Es sollte irgendwo im temporären Ordner gesucht werden (nicht, dass einige Programme ihre eigenen temporären Verzeichnisse in% appdata% verwenden) – npocmaka

+0

Robocopy wäre wahrscheinlich die schnellste Option. – Squashman

+1

'dir/s/b c: \ * cal * .jpg' - aber wie bereits erwähnt: das ist sehr langsam. – Stephan

Antwort

0

dieses Batch-Skript Versuchen:

@echo off 
Title Searching for a specific file (name and type) and copy to USB Drive 
Mode con cols=90 lines=10 & color 9E 
setlocal ENABLEDELAYEDEXPANSION 
for /f "tokens=2" %%i in ('wmic logicaldisk where "drivetype=2" ^|find /i ":"') do (Set MyUSB=%%i) 
set _drive=%MyUSB% 
If defined _drive (
cls 
echo. 
echo   --------------------------------------------------------- 
echo      Your usb key is connected as !_drive! 
echo   --------------------------------------------------------- 
echo. 
pause 
Goto :search 
) ELSE (
cls 
color 0C 
echo. 
echo  -------------------------------------------------------------------------- 
echo  Your usb key is not detected, please check it and re-run again this script 
echo  -------------------------------------------------------------------------- 
echo. 
) 
pause 
exit 

:Search 
Cls 
echo(
echo  -------------------------------------------------------------------------- 
echo    Please Wait a while ....... Searching is in progress ......... 
echo  -------------------------------------------------------------------------- 
set "LogSearch=%~dp0%~n0.txt" 
set Pattern="*CAL*.jpg" 
Where /R C:\ "%Pattern%" /F >"%LogSearch%" 2>&1 
If "%ErrorLevel%"=="1" (
Cls 
echo(
echo  -------------------------------------------------------------------------- 
@echo       No file found with this Pattern 
echo  -------------------------------------------------------------------------- 
) else (
    for /f "delims=" %%a in ('Type "%LogSearch%"') do (
     @echo found %%a 
     @Copy %%a !_drive!\ 
    ) 
) 
pause & exit 

EDIT: 16/03/2017 @ 20: 00

@echo off 
Title Searching for a specific file (name and type) and copy to USB Drive 
Mode con cols=90 lines=10 & color 9E 
setlocal ENABLEDELAYEDEXPANSION 
for /f "tokens=2" %%i in ('wmic logicaldisk where "drivetype=2" ^|find /i ":"') do (Set MyUSB=%%i) 
set _drive=%MyUSB% 
If defined _drive (
cls 
echo. 
echo   --------------------------------------------------------- 
echo      Your usb key is connected as !_drive! 
echo   --------------------------------------------------------- 
echo. 
pause 
Goto :search 
) ELSE (
cls 
color 0C 
echo. 
echo  -------------------------------------------------------------------------- 
echo  Your usb key is not detected, please check it and re-run again this script 
echo  -------------------------------------------------------------------------- 
echo. 
) 
pause 
exit 

:Search 
Cls 
echo(
echo  -------------------------------------------------------------------------- 
echo    Please Wait a while ....... Searching is in progress ......... 
echo  -------------------------------------------------------------------------- 
set "LogSearch=%~dp0%~n0.txt" 
If exist "%LogSearch%" Del "%LogSearch%" 
set Pattern="CAL" "ERROR" 
For %%P in (%Pattern%) Do (
    Where /R C:\ "*%%~P*.jpg" /F >> "%LogSearch%" 2>&1 
    If "%ErrorLevel%"=="1" (
    Cls 
    echo(
    echo  -------------------------------------------------------------------------- 
    echo       No file(s^) found with this Pattern 
    echo  -------------------------------------------------------------------------- 
    ) else (
     for /f "delims=" %%a in ('Type "%LogSearch%"') do (
      @echo found file %%a 
      @Copy /Y %%a !_drive!\ 
     ) 
    ) 
) 
pause & exit 
+0

Danke Hackoo - das funktioniert wie ein Zauber! :) Was ist, wenn ich ein anderes Wort zur Suche hinzufügen möchte (Dateien mit "CAL" ODER "Error" kopieren)? Vielen Dank! – lox2311

+0

@ lox2311 Geben Sie einen Versuch für meine letzte Bearbeitung und vergessen Sie nicht, diese Lösung als Antwort zu akzeptieren :) – Hackoo

+0

Vielen Dank! – lox2311

Verwandte Themen