Re: Batch-Datei: Randomize copy

Tech-Archive recommends: Fix windows errors by optimizing your registry

From: Christoph Tuszynski (spamdump_at_online.de)
Date: 12/28/04


Date: Tue, 28 Dec 2004 12:26:52 -0800


"Juergen" <u446960449@spawnkill.ip-mobilphone.net> schrieb:
[...]
> copy \ordner1\(randomize).bmp \windows\boot.bmp
>
> Leider kann ich nicht programmieren,
> ich kenne nur ein paar batch-Befehle aus DOS-Zeiten.
> Kann man damit das gewünschte Kopieren hin bekommen?
> Oder mit einer anderen interpretierenden Sprache?

vb-Script wäre z.B. dazu geeignet.
Random-funktion:
http://msdn.microsoft.com/library/en-us/script56/html/js56jsmthrandom.asp
Einfache Dateioperationen (achtung, Zeilenumbruch):
<http://msdn.microsoft.com/library/en-
us/script56/html/sgworkingwithfiles.asp>

Hier ein Beispiel (<dateiname>.vbs), wie es aussehen könnte (ohne Gewähr):

---
   Dim oFS     	'FileSystemObject
   Dim oOrdner  'Scripting.Folder
   Dim oDateien 'Scripting.Files
   Dim oDatei   'Scripting.File
   Dim iZufall  'Integer
   Dim iZaehler 'Integer
   
   Set oFS = CreateObject("Scripting.FileSystemObject")
   Set oOrdner = oFS.GetFolder(<quellverzeichnis>)
   Set oDateien = oOrdner.files
   iZufall = oDateien.Count * Rnd + 1
   
   For Each oDatei In oDateien
      iZaehler = iZaehler + 1
      If iZaehler = iZufall Then
         Exit For
      End If
   Next
   
   oDatei.Copy <zielverzeichnis+dateiname>, True 
   
   Set oFiles = Nothing
   Set oFolder = Nothing
   Set oFS = Nothing
---
<quellverzeichnis> und <zielverzeichnis> müssten noch mit "Leben" gefüllt 
werden oder das Skript muss die Argumente abfragen, mit denen es aufgerufen 
wird.
Sehr unschön an dem Coding ist die "For Each" Schleife, die mit "Exit For" 
verlassen wird. Jedoch konnte ich auf die Schnelle das Files-Objekt nicht 
dazu überreden, beim "Item" als Argument eine Zahl zu aktzepieren anstatt 
einen Dateinamen zu erwarten. :-(
> Falls jemand noch mehr schreiben möchte:
> Wie kann man statt des Zufalls-bitmaps
> ein bitmap nach dem anderen der Reihe nach kopieren?
> (Das heißt, bei jedem boot nur EIN copy.)
Dazu muss die For-Schleife verändert und vorher der Dateiname der evtl. 
existierenden Datei ermittelt werden. Die Datei, welche in der Schleife 
nach der existierenden Datei kommt, ist dann die "nächste".
Für die Fälle:
- die letzte Datei in der Schleife ist im Zielverzeichnis (da gibt es in 
  der Schleife keine "nächste" Datei)
- die Datei im Zielverzeichnis existiert im Quellverzeichnis nicht (könnte 
  ja gelöscht worden sein)
- keine Datei im Zielverzeichnis vorhanden (Erster Aufruf oder 
  Zielverzeichnis gelöscht)
muss dann auch noch etwas programmiert werden.
Grüße
Christoph


Relevant Pages

  • Re: Re: Batch-Datei: Randomize copy
    ... Dim oOrdner 'Scripting.Folder ... Set oFS = CreateObject ... 'Dateiliste durchschleifen, bei der zufälligen Datei Schleife verlassen ... Set oOrdner = Nothing ...
    (microsoft.public.de.german.windowsxp.sonstiges)
  • Datei in Excel erstellen
    ... Function zeilenweise_excel(ByRef datei As String, ... Dim xlBook As Object ... Set xlApp = CreateObject ...
    (microsoft.public.de.vb)
  • Aus Word Outlook Aufgabe mit Hyperlink anlegen
    ... in dieser Aufgabe soll ein Link auf eine Datei in das Textfeld ... Datei leicht wiedergefunden werden kann. ... Dim oOutlookApp As Outlook.Application ... Set oOutlookApp = CreateObject ...
    (microsoft.public.de.word.vba)
  • Re: Datei Qber_Variable_=F6ffnen?=
    ... Ich möchte eine bestimmte Datei öffnen und zwar dadurch, ... ' Dim xlApp As Excel.Application ... ' Dim xlSheet As Excel.Worksheet ... Set xlBook = xlApp.Workbooks.Open ...
    (microsoft.public.de.access)
  • Re: Riesige Zeile - Semikolon durch CR ersetzten
    ... Das Ende einer Zeile wird innerhalb der Datei durch ein vbCrLf [chr$& ... > Dim line As String ... > Dim strInputFile As String ...
    (microsoft.public.de.vb)