hjälp med någon form av script till windows robocopy

Trädvy Permalänk
Medlem
Plats
Stenungsund
Registrerad
Maj 2002

hjälp med någon form av script till windows robocopy

Hej har ett lite annorlunda problem som jag hoppas kunna beskriv här nedan.
Har försökt finna en egen lösning med xcopy h robocopy, men det fungerar inte.
Kanske inte widows egna verktyg (xcopy) kan göra det jag vill?
Detta är vad jag vill:

Följande mappstruktur:
E:\test\huvudmapp\grupper\

I mappen "grupper" finns
20st undermappar
Dessa heter tex.
GruppA
GruppB
TestlabbA
TestlabbB
1001
1002

Osv...
Dvs de heter lite olika namn.
Under varje liten unik mapp ovan döjer sigsen ytterligare 20 mappar.
Tex under mappen "GruppA"
Finns mapparna:
1
2
3
Adam
Viktor
Danne

Det som är 100% gemensamt är att alla undermapparna i sista ledet innehåller mappen "Danne"

Det som jag nu vill göra är följande:
Copiera mappstrukturen under

E:\test\huvudmapp\*.*

Till c:\test\
Här skall nu då finnas
C:\test\gupper\
I varje grupp tex under mappen "GruppA" i exemplet ovan, skall nu endast 1 mapp följa med. Mappen "Danne" och i mappen danne skall allt innehåll medfölja (alla filer ca 30 filer).

Så mappen C:\test\grupper\GruppA skall innehålla 1 mapp (Danne) och i denna skall det ligga 30 filer.

Så följande mapp skall då också finnas osv.
C:\test\grupper\GruppB\Danne\ 28 filer i denna mappen tydligen

Förstår ni vad jag är ute efter ovan?
Det som händer när jag försökt med xcopy och robocopy med div. växlar är att den kopierar alla mappar med tyvärr också alla filer under dessa. Det är bara filerna i mappen Danne jag vill åt.

Jag inte heller använda mig av hela namnet tex:
Xcopy E:\test\huvudmapp\GruppA\Danne c:\test\
För om 3v tillkommer det kanske ytterligare 1 ny mapp under huvudmappen som i sin tur innehåller mappen "Danne"

Så på ren svenska så skall den kopiera alla mappar under mappen huvudmapp samt sen gå in i varje mapp och enbart kopiera mappen "Danne" och hela dess innehåll 1-50 filer.

Använder windows 7
Tack på förhand
/Daniel

Like car more than computers right now..

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Maj 2004

Om PowerShell är ett alternativ kanske den här tråden är intressant;
https://social.technet.microsoft.com/Forums/windowsserver/en-...

Skickades från m.sweclockers.com

as far as we can tell, the massacre went well...

Trädvy Permalänk
Moderator
Plats
Här
Registrerad
Jul 2009

*bump raderad*

Detta då den typen av inlägg som bara är till för att flytta tråden högre upp i trådlistningen är förbjudna enligt § 4 i reglerna. Det beror på att vi tycker att det är viktigt att alla får samma chans att få sina trådar uppmärksammade. Den här gången har jag inte låst din tråd på grund av detta, men tänk på det i fortsättningen

Trädvy Permalänk
Medlem
Plats
Huskvarna
Registrerad
Jan 2010
Skrivet av Silverpilen:

Hej har ett lite annorlunda problem som jag hoppas kunna beskriv här nedan.
Har försökt finna en egen lösning med xcopy h robocopy, men det fungerar inte.
Kanske inte widows egna verktyg (xcopy) kan göra det jag vill?
Detta är vad jag vill:

Följande mappstruktur:
E:\test\huvudmapp\grupper\

I mappen "grupper" finns
20st undermappar
Dessa heter tex.
GruppA
GruppB
TestlabbA
TestlabbB
1001
1002

Osv...
Dvs de heter lite olika namn.
Under varje liten unik mapp ovan döjer sigsen ytterligare 20 mappar.
Tex under mappen "GruppA"
Finns mapparna:
1
2
3
Adam
Viktor
Danne

Det som är 100% gemensamt är att alla undermapparna i sista ledet innehåller mappen "Danne"

Det som jag nu vill göra är följande:
Copiera mappstrukturen under

E:\test\huvudmapp\*.*

Till c:\test\
Här skall nu då finnas
C:\test\gupper\
I varje grupp tex under mappen "GruppA" i exemplet ovan, skall nu endast 1 mapp följa med. Mappen "Danne" och i mappen danne skall allt innehåll medfölja (alla filer ca 30 filer).

Så mappen C:\test\grupper\GruppA skall innehålla 1 mapp (Danne) och i denna skall det ligga 30 filer.

Så följande mapp skall då också finnas osv.
C:\test\grupper\GruppB\Danne\ 28 filer i denna mappen tydligen

Förstår ni vad jag är ute efter ovan?
Det som händer när jag försökt med xcopy och robocopy med div. växlar är att den kopierar alla mappar med tyvärr också alla filer under dessa. Det är bara filerna i mappen Danne jag vill åt.

Jag inte heller använda mig av hela namnet tex:
Xcopy E:\test\huvudmapp\GruppA\Danne c:\test\
För om 3v tillkommer det kanske ytterligare 1 ny mapp under huvudmappen som i sin tur innehåller mappen "Danne"

Så på ren svenska så skall den kopiera alla mappar under mappen huvudmapp samt sen gå in i varje mapp och enbart kopiera mappen "Danne" och hela dess innehåll 1-50 filer.

Använder windows 7
Tack på förhand
/Daniel

Följande är testat på Windows 10 och verkar fungera som du vill där. Det borde fungera på Windows 7 med men testa alltid på säkerhetskopierade filer för att vara säker.

Scriptet förutsätter även att vissa parametrar du givit ovan gällande mappstrukturen alltid är sanna. Om du har andra namn och fler underkategorier innan mappen "grupper" etc så får du modifiera scriptet och platsen du kör det från (eller launch arguments) för att ta hänsyn till det.

@echo off setlocal ENABLEDELAYEDEXPANSION set currentLevel=0 set maxLevel=1 :procFolder pushd %1 2>nul || exit /b for /d %%F in (*) do ( if %currentLevel% lss %maxLevel% ( set testvari=%%~F ) if "%%~F"=="Danne" ( xcopy /i /d /y "%%~F" "i:\test2\grupper\%testvari%\Danne" ) set /a currentLevel+=1 call :procFolder "%%F" set /a currentLevel-=1 ) popd

Notera att du själv måste modifiera sökvägen för att spara till vad som är aktuellt i ditt fall.
xcopy /i /d /y "%%~F" "i:\test2\grupper\%testvari%\Danne"
Detsamma gäller matchningskriteriet i if-satsen om det inte är Danne som gäller i verkligheten.

Notera även att scriptet utan att fråga skriver över existerande filer om de filer du försöker kopiera är nyare än de som redan finns där du försöker kopiera till. Du kan ändra switcharna i xcopy kommandot för att passa dina önskemål om du inte vill ha det så.

Scriptet kan köras antingen från undermappen "grupper" i ditt exempel ovan (placera det i mappen E:\test\huvudmapp\grupper\ och kör från utforskaren), eller från valfritt ställe om du startar det från kommandotolken och ger startmappen som argument (c:\script.bat e:\test\huvudmapp\grupper )

Det går säkert att lösa snyggare än så här men detta verkar iaf fungera som jag uppfattar att du vill ha det.

i7 6700k @ 4.6GHz | NH-U12S | ASUS Maximus VIII Gene | EVGA 1080 FTW | 16GB Corsair Vengeance 3000MHz | Samsung 850 Evo M.2 250GB, 840 250GB, 840 EVO 120GB | 2x2TB | Silverstone TJ08B-E | QX2710 | U2412M | AW2310 | Filco Majestouch MX Brown TKL | Logitech G403