Batch | dir "PFAD" /o:-d - Was bedeuten die Punkte?

Palladin007

assimiliert
Code:
%userprofile%>dir "%userprofile%\Documents\test" /o:-d
 Datenträger in Laufwerk G: ist My Book
 Volumeseriennummer: 40F0-EDCD

 Verzeichnis von %userprofile%\Documents\test

30.09.2011  13:01    <DIR>          Neuer Ordner
30.09.2011  12:56    <DIR>          ..
30.09.2011  12:56    <DIR>          .
30.09.2011  12:53                 0 Neues Textdokument (2).txt
30.09.2011  12:51                 0 Neues Textdokument.txt
               2 Datei(en),              0 Bytes
               3 Verzeichnis(se), 416.140.955.648 Bytes frei
Meinen Nutzer-Pfad hab ich einfach mit der Variable ausgetauscht, auch wenn die mal nicht dort stehen würde. Da steht eigentlich überall der Original-Nutzerpfad.


Das kommt, wenn ich mit 'dir' arbeite.
das ist alles eigentlich ziemlich leicht, aber was bedeuten die zwei Punkte und was bedeutet der eine Punkt?
Beides kann seine Änderungs-Zeit ändern, deswegen will ich das wissen, damit ich es vielleicht nutzen kann.
 
Mit dem Befehl " cd .." wird zum übergeordneten Ordner gewechselt.
Mit dem Befehl " cd ." wird zum aktuellen Ordner gewechselt, d.h. der Ordner ändert sich nicht.

Also:
".." entspricht dem übergeordneten Verzeichnis.
"." entspricht dem Verzeichnis, das aktuell geöffnet ist
 
ot:
und wenn du cd ohne parameter verwendest, bekommst du als ausgabe den Aktuellen pfad und wenn du cd mit nem Backslash verwendest, wechselst du ins root verzeichnis und wenn du explorer mit nem Beistrich startest (explorer ,) dann öffnet es den Arbeitsplatz...
 
Mit dem Befehl " cd .." wird zum übergeordneten Ordner gewechselt.
Mit dem Befehl " cd ." wird zum aktuellen Ordner gewechselt, d.h. der Ordner ändert sich nicht.

Also:
".." entspricht dem übergeordneten Verzeichnis.
"." entspricht dem Verzeichnis, das aktuell geöffnet ist

Wenn ich also die Änderungszeit von dem einen Punkt sehe, dann sehe ich bei dem Pfad:
c:\test
Die letzte Änderung von dem Ordner 'test'
Und wenn ich einen Punkt habe, dann bedeutet das c:

Wenn ich jetzt in dem Ordner c:\test\x etwas ändere, wird dann trotzdem angezeigt, dass 'test' geändert wurde, da etwas im Inhalt geändert wurde?


Um das mal zu erklären:
Ich will ein Programm schreiben, womit ich den Ordner, wo ich alle Batch-Projekte gespeichert habe, von meinem Stick und dem PC immer abgleichen kann.
Wenn ich in der Schule also was ändere, dann muss das Programm erkennen, wo die Änderung ist und die neue Datei auf meinen PC kopieren und die alte überschreiben.
Wenn ich Zuhause was ändere, dann passiert das anders herum.


ot:
und wenn du cd ohne parameter verwendest, bekommst du als ausgabe den Aktuellen pfad und wenn du cd mit nem Backslash verwendest, wechselst du ins root verzeichnis und wenn du explorer mit nem Beistrich startest (explorer ,) dann öffnet es den Arbeitsplatz...

Sorry, aber irgendwie weiß ich nicht, was das jetzt damit zu tun hat^^
 
Um das mal zu erklären:
Ich will ein Programm schreiben, womit ich den Ordner, wo ich alle Batch-Projekte gespeichert habe, von meinem Stick und dem PC immer abgleichen kann.
Wenn ich in der Schule also was ändere, dann muss das Programm erkennen, wo die Änderung ist und die neue Datei auf meinen PC kopieren und die alte überschreiben.
Wenn ich Zuhause was ändere, dann passiert das anders herum.
Gibts schon. Nennt sich "Aktenkoffer" (is im "Neu >"-Menü drin). Der Synct alle Files im Koffer auf nen Stick oder auf den Originalordner, je nach dem.
Oder du verwendest meinen Favoriten: Dropbox
Gibbet gratis 2 Gig Webcloud zum Synchronisieren mit jedem PC den du willst, oder online Zugriff...


Sorry, aber irgendwie weiß ich nicht, was das jetzt damit zu tun hat^^
Daher stehts ja auch in OT. Es war ne Info die gerade in meinem Kopf war, irgendwie was damit zu tun hat, aber nicht auf die Frage als Antwort zutrifft.
 
Achso^^
Werd mal schauen, vielleicht wird das noch ganz nützlich^^


Und wenn ich das mit meinem eigenen Programm nicht schaffe, werde ich mir mal deine beiden Vorgeschlagenen anschauen.
Aber auch nur, weil das das erste Programm ist, was ich wirklich brauche^^
 
Also, gerade getestet:

Bsp: Ordner C:\Test

Wenn du im Ordner C:\Test was änderst oder neu erstellst wird die Zeit bei .. aktualisiert.
Wenn du im Ordner C:\Test\x was machst, dann wird die Zeit in test\x geändert, nicht aber in C:\Test.

Du müsstest also defakto eine Indexdatei mit den Zeitindizes der Ordner und Subordner anlegen, und kannst die Dann beim Abgleichen mit den neuen (?) Versionen vergleichen.
Sind sie neuer, dann kannst du die Dateien vergleichen, so brauchst du nicht immer alle Dateieen vergleichen.
ACHTUNG: I.d.R. wird wenn du dir Bilder ansiehst mit Miniaturansicht die Thumbs.db verändert was dazu führen kann dass du bei Bilderordnern oder wenn Bilder in den Ordnern mit der Batch ist, dennoch einen (unnötigen) abgleich machen musst.
Kann bei vielen Dateien ärgerlich sein.

BTW: Um aus dem Aktuellen Ordner das Datum und die Zeit abzulesen, kannst du entweder ein Variablenkonstrukt verwenden (um einen Substring zu erstellen) oder eine For-Schleife.
Die For-Schleife hab ich schon Probiert, da bleibt beim Datum hinten n Leerzeichen stehen, also würd ich dir die Variablenspielerei empfehlen.

Code:
for /f "tokens=1,2" %%a in ('dir ^| find "<DIR>          .."') do set ChangeDate=%%a & set ChangeTime=%%b

jm4c
 
Das Problem, dass das Programm auch Dateien abgleichen würde, die nur angesehen wurde, das kann man ja mit dem Parameter 't' lösen:
Code:
DIR [Laufwerk:][Pfad][Dateiname] [/A[[:]Attribute]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]Folge]] [/P] [/Q] [/R] [/S] [B][/T[[:]Zeit]][/B] [/W] [/X] [/4]

 /T         Bestimmt welche Zeit verwendet wird (nur für NTFS).
 Zeit        C  Erstellung
             A  Letzter Zugriff
             [B]W  Letzter Schreibzugriff[/B]

Blöd ist dabei aber, dass das an NTFS gebunden ist, da ich meinem Stick eigentlich kein NTFS verpassen wollte.

Kannst du mir deswegen mal das mit dem Variablenkonstrukt erklären?
Davon hab ich noch nichts gehört...


Wegen deiner For-Schleife:
Das Lehreichen, was am Ende steht, das kann man ganz einfach damit raus filtern:
Code:
set Variable=%Variable: =%
 
Oben