2016-09-08 5 views
-1

Ich muss Dateien von C:\users\users name\documents\sound recordings\ Verzeichnis auf unser Netzlaufwerk P:\transcription\users name\ verschieben. Ich brauche die Dateien, die automatisch umbenannt werden, wenn die Datei im Verzeichnis P:\transcription\users name existiert. Ich bin ein Anfänger und kann nur einfache Batch-Dateien schreiben und die, die ich geschrieben habe, um die Dateien zu verschieben, überschreiben die Dateien mit dem gleichen Namen im Verzeichnis. DankeVerschieben von Dateien und Umbenennen von Duplikaten

+1

Post das Sie – Compo

+0

schrieb ich habe eine Antwort geschrieben, die Ihnen helfen können. Aber lesen Sie bitte [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask). Diese Community wird nicht nur Antworten geben. Bitte lassen Sie uns wissen, was Sie versucht haben und an welchem ​​Teil des Prozesses Sie Probleme haben. Dann können wir Ihnen helfen. – elzooilogico

Antwort

0

Dies kann helfen.

Es werden Dateien angezeigt, die mit dem resultierenden Dateinamen verschoben werden sollen. Wenn es in Ordnung für Sie arbeitet, entfernen Sie die Zeile echo !src!%%~nxa - !dst!!file! und löschen Sie die rem Stichwort aus rem move !src!%%a !dst!!file! >nul

@echo off 

SetLocal EnableDelayedExpansion 

set "wildcard=*.*" & rem files to search for 
set "skipUsers=Guest Administrator" & rem users not to copy files 

:: get users 
set/a offset=0 
for /F "skip=2 tokens=2 delims=," %%1 in ('wmic useraccount get name^,sid /format:csv') do (
    set/a offset+=1, USER_MAX=offset 
    set "USER[!offset!]=%%1" 
) 

for /L %%i in (1,1,%USER_MAX%) do (
    set/a skip=0, numFiles=0 
    set "currentUser=!USER[%%i]!" 
    set "src=C:\!currentUser!\documents\sound recordings\" 
    set "dst=P:\transcription\!currentUser!\" 

    rem get time stamp 
    for /f "tokens=2 delims==" %%A in ('wmic os get localdatetime /value') do set "Tm=%%A" 
    set "timeStamp=!Tm:~0,4!!Tm:~4,2!!Tm:~6,2!_!Tm:~8,2!!Tm:~10,2!!Tm:~12,2!" 

    for %%a in (%skipUsers%) do if /I "!currentUser!" equ "%%a" set/a skip=1 
    if !skip! neq 0 (rem avoid copying blacklist users 
    echo !currentUser!: Skipping 
) else (
    <nul set/P="!currentUser!: Moving files" 
    pushd !src! 

    dir /ad !dst! >NUL 2>NUL || md !dst! & rem create destination folder if it doesn't exist 

    for %%a in (%wildcard%) do (
     set "file=%%~nxa" 
     if exist "!dst!!file!" set "file=%%~na_!timeStamp!%%~xa" & rem rem if file exist, append a time stamp suffix to avoid overwriting 
     echo !src!%%~nxa - !dst!!file! 
     rem move !src!%%~nxa !dst!!file! >nul 
     set/a numFiles+=1 
    ) 
    echo : !numfiles! files moved 
    popd 
) 
) 

EndLocal 
exit/B 
Verwandte Themen