Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Datei in alle unterordner kopieren, aber unterordner-tiefe abgeben können

Frage Entwicklung Batch & Shell

Mitglied: 45753

45753 (Level 1)

11.04.2007, aktualisiert 17.04.2007, 10091 Aufrufe, 7 Kommentare

Hallo zusammen,

mit der For-Schleife ist es ja möglich eine Datei in alle unterordner zu vervielfältigen...
for /R %%i in (.) do copy [Datei] "%%i"
Nur habe ich noch nicht rausbekommen, wie man die tiefe der Unterordner bestimmen kann. Wenn ich also z.B. nur eine Tiefe von 2 haben möchte, dann sollte die Batch datei in der lage sein, die datei in alle unterordner bis eben zu einer unterordnertiefe von 2 zu kopieren. Ab dort wird die Datei dann nicht mehr weiter vervielfältigt. ist das möglich ?

Gruss, wobleibtdiezeit.
Mitglied: 46503
11.04.2007 um 12:33 Uhr
Setze ein Variable, und wenn du bei dem gewünschten Wert angekommen bist, beende die Aktion.
Bitte warten ..
Mitglied: 45753
11.04.2007 um 12:38 Uhr
Ja, das ist auch mein Wunsch. Nur habe ich keine Ahnung wie ich Unterordner zählen kann., bzw der Batch datei das beibringen kann.
Bitte warten ..
Mitglied: 46503
11.04.2007 um 13:08 Uhr
Probiere es aus, sollte bis 3 funktionieren:
01.
@echo off & setlocal 
02.
Set /A zaehler=0 
03.
for /R %%i in (.) do if %zaehler% LSS 3 call :wasweissich "%%i" 
04.
goto :eof 
05.
 
06.
:wasweissich 
07.
set /A zaehler=%zaehler%+1 
08.
if %zaehler% GTR 3 goto :eof 
09.
echo %zaehler% 
10.
rem copy [Datei] "%1"  
11.
echo %1
Bitte warten ..
Mitglied: 45753
15.04.2007 um 21:03 Uhr
Hallo hpdnm,

ich habe das gerade mal auprobiert...
Der Batch macht leider nicht das wonach ich suche. Folgendes Szenario:

In einem Ordner liegt eine Datei die ich in alle unterordner bis zu einer Tiefe von 2 in alle jeweiligen unterordner kopieren möchte - also z.B.:

Baumstruktur:
OrdnerAA\OrdnerAB\OrdnerAC
OrdnerBA\OrdnerBB\OrdnerBC

Die Batch sollte das hier können:

Datei kopieren nach
OrdnerAA
OrdnerAA\OrdnerAB
OrdnerBA
OrdnerBA\OrdnerBB

Die jetzige Batch würde so vorgehen:

Datei kopieren nach
OrdnerAA
OrdnerAA\OrdnerAB
OrdnerAA\OrdnerAB\OrdnerAC
OrdnerBA

Gibt es dafür eine Lösung?
Vielleicht kann man die Anzahl der Backslashs von dem Ordner in dem man sich gerade befindet bis zu der gewünschten Ordnertiefe zählen lassen...

Wenn es mit Boardmitteln nicht geht...
-Bei Robocopy kann man ein /LEV:n angeben, doch das bezieht sich meines Wissens nur auf den Source Folder und nicht auf den Destination Folder.
-Kann xxcopy das vielleicht ?

Grüsse,
wobleibtdiezeit
Bitte warten ..
Mitglied: Biber
15.04.2007 um 23:16 Uhr
Moin wobleibtdiezeit,

ich würde es von von der Funktionalität her trennen und dieses vielleicht auch an anderen Stellen verwendbare "Gib mir alle Unterordner unterhalb von XXX in einer Tiefe von 2 (oder 3 oder 4...oder 7)" in einen seperaten Oneliner packen.

Vielleicht lässt es sich ja noch mal wiederverwenden bei einer DirSize-Variante oder ähnlichem.

So ein Billigschnipsel könnte so aussehen:
01.
:: ---------snipp DispDirsAndSubdirs.bat 
02.
@Setlocal EnabledelayedExpansion & FOR /R "%~dpnx1" %%i in (.) do @( 
03.
   set "thisdir=%%~sdpnxi\." & set "relDir=!thisDir:%~sdpnx1\=!" 
04.
  for /f "delims=\ tokens=1,%2,*" %%a in ("!relDir!") do @if "%%c" LEQ "." echo %%~dpnxi 
05.
)  
06.
:: ---------snapp DispDirsAndSubdirs.bat
Und würde aufgrufen werden mit den zwei Parametern Param1==StartDir und Param2==Verzeichnistiefe.
So würde ein Aufruf des Einzeilers mit "c:\Eigene Dateien" und 4 alle Unterverzeichnisse bis zu 4 Ebenen unterhalb "C:\Eigene Dateien" liefern.
01.
$cmd$DispDirAndSubDirs.bat "c:\Eigene Dateien" 4 
02.
c:\Eigene Dateien 
03.
c:\Eigene Dateien\My eBooks 
04.
c:\Eigene Dateien\Eigene Bilder 
05.
c:\Eigene Dateien\Eigene Webs 
06.
c:\Eigene Dateien\Eigene Webs\_vti_pvt 
07.
c:\Eigene Dateien\Eigene Webs\_private 
08.
c:\Eigene Dateien\Eigene Webs\_vti_cnf 
09.
....
...allerdings auch das Start-Verzeichnis "c:\Eigene Dateien" selbst als erste Zeile.

Dennoch, wenn Du diesen Schnipsel als Batch irgendwo abspeicherst, dann kannst Du ihn innerhalb Deines KopierMir-Batches in einer For /f-Anweisung aufrufen.
[Edit] Kannst dieses Zeile natürlich auch als geCALLten Block in Deine Batch integrieren. Dann ist er nur nicht "wiederverwendbar". [/Edit]
Beispiel in Deinem Batch :
01.
@Echo off  
02.
 
03.
for /f "skip=1 delims=" %%i in ('D:\batches\DispDirsAndSubdirs d:\MeinOrdner 2') do Copy test.txt "%%i\test.txt"
Wermutstropfen: der "DispDirsAndSubDirs"-Batch funktioniert nur ab einer Mindesttiefe von 2 Ebenen (nicht mit EINER).
Dazu müsstest/würdest Du sinnvollerweise auf eine "For /D.." -Anweisung zurückgreifen.

Wenn Dir die obige Mimik zu aufwändig ist, kannst Du ohnehin auch 2 Verzeichnisebenen mit zwei gestaffelten FOR /D-Anweisungen abfackeln.

01.
Set Startdir=D:\test 
02.
FOR /D %%i in ("%startdir%"} do copy test.txt ""%Startdir%\%%i\test.txt" && For /D %%j in ("%Startdir%\%%i") Do copy test.txt ""%Startdir%\%%i\%%j\test.txt" 
HTH
Biber
Bitte warten ..
Mitglied: 45753
16.04.2007 um 14:59 Uhr
Hallo Biber,

Danke fuer deine Antwort. Ich werde versuchen mich heute abend drum zu kümmern, sodass die meine Antwort hoffentlich nicht lange auf sich warten läst...

Ich habe Deinen Schnipsel jetzt ausprobiert und es funtioniert alles. In meine Batch habe ich es noch nicht eingebaut, aber das wird nach Deiner Ausführlichen Anleitung denke ich nicht sehr schwer werden. Ich begeb mich mal dran.

Vielen Danke für Deine Hilfe!

Grüsse,
wobleibtdiezeit
Bitte warten ..
Mitglied: Biber
17.04.2007 um 19:29 Uhr
Moin, wobleibtdiezeit,

gern geschehen, und der Vollständigkeit halber poste ich noch mal zwei "extreme" Variationen des ursprünglichen Ansatzes.

a) als ganz eigenständige Batch-Variante CopyIntoDirsAndSubdirs mit drei Parametern (1=Ab wo 2=Ebenen 3=Was)

01.
:: ---------snipp CopyIntoDirsAndSubdirs.bat [Parameter z.B. d:\temp 3 x:\myStuff.txt] 
02.
@Setlocal EnabledelayedExpansion & FOR /R "%~dpnx1" %%i in (.) do @( 
03.
   set "thisdir=%%~sdpnxi\." & set "relDir=!thisDir:%~sdpnx1\=!" 
04.
  for /f "delims=\ tokens=1,%2,*" %%a in ("!relDir!") do @if "%%c" LEQ "." copy "%~3" "%%~dpnxi\%~nx3 
05.
)  
06.
:: ---------snapp CopyIntoDirsAndSubdirs.bat
b) als geCALLter Block innerhalb eines Batches


01.
:: ---------snipp IrgendeinBatch.bat [Parameter z.B. d:\temp 3 x:\myStuff.txt] 
02.
@echo off & Setlocal EnabledelayedExpansion 
03.
 
04.
:: whatever happens .... 
05.
..... 
06.
.... 
07.
:: an der nötigen Stelle: 
08.
Call :CopyIntoDirsAndSubDirs "C:\Eigene Dateien" 3 f:\blablubb.txt 
09.
... 
10.
::..weiter im Batch 
11.
goto :eof 
12.
 
13.
:CopyIntoDirsAndSubDirs: [Parameter z.B. %1=d:\temp %2=3 %3=x:\myStuff.txt] 
14.
FOR /R "%~dpnx1" %%i in (.) do @( 
15.
   set "thisdir=%%~sdpnxi\." & set "relDir=!thisDir:%~sdpnx1\=!" 
16.
  for /f "delims=\ tokens=1,%2,*" %%a in ("!relDir!") do ( 
17.
       @if "%%c" LEQ "." copy "%~3" "%%~dpnxi\%~nx3 
18.
)) 
19.
goto :eof 
20.
:: endOfSub :CopyIntoDirsAndSubdirs 
21.
:: ---------snipp IrgendeinBatch.bat

Ich setze den Beitrag mal auf "Gelöst" und "Geschlossen".

Gruss
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Automatisches kopieren von Dateien aus verschiedenden Unterordnern.
Frage von michael1309Batch & Shell13 Kommentare

Hallo zusammen, vllt hat jemand von Euch eine Idee: Zum Problem, täglich werden auf einen FTP Server, Daten in ...

Batch & Shell
Dateien in Unterordnern und den Unterordner als solches komprimieren in zip
Frage von schmitzeBatch & Shell1 Kommentar

Guten Morgen Zusammen, ohne groß auszuholen, bin ich leider ein Laie was die IT angeht. Ich suche eine Lösung ...

Backup
Mit cmd nur Unterordner und dessen Inhalt kopieren
gelöst Frage von red-edBackup5 Kommentare

Guten Tag, ich bin schon öfters auf eurer Seite fündig geworden, nun habe ich aber ein Problem das bestimmt ...

Batch & Shell
Robocopy soll nur spezielle Unterordner kopieren
Frage von PoldiMUCBatch & Shell2 Kommentare

Guten Abend, ich möchte mit Robocopy nur spezielle Ordner einer Ordnerstruktur incl. der übergeordneten Ordnerstruktur kopieren (siehe Bild 1 ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 19 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 23 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 5 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Windows 10
Probleme mit Dateien, deren Pfad + Dateiname länger als 256 Zeichen sind
Frage von FalaffelWindows 109 Kommentare

Guten Tag, unter Windows 10 scheint es immer noch das Problem zu geben, dass der Pfad + Dateiname einer ...