2010-01-21 5 views

Antwort

31

ändern %-%% für die Verwendung in Batch-Datei, für %~ta Syntax call /?

for %a in (MyFile.txt) do set FileDate=%~ta 
+5

+1. Das ist eigentlich das Richtige. Parsing der Ausgabe von "dir" ist bestenfalls Wahnsinn. Randnotiz: Verdoppeln Sie in einer Batchdatei die '%' Zeichen. – Joey

+0

Danke, noch eine Frage: Wie bekomme ich nur den Datumsteil. Ist die folgende Syntax zuverlässig genug oder gibt es einen besseren Weg? set FileDate =% FileDate: ~ 0,10% –

+1

Es funktioniert möglicherweise nicht, wenn Sie Ihre internationalen Einstellungen ändern, aber ansonsten sollte es OK sein –

2

Es funktioniert für mich auf Vista. Einige Dinge versuchen:

  1. ersetzen find mit dem vollständig qualifizierten Pfad des Fundes Befehls. find ist ein allgemeiner Werkzeugname. Es gibt eine Unix-Suche, die sich sehr von der integrierten Windows-Suche unterscheidet. wie folgt:
    FOR /f %%a in ('dir ^|%windir%\system32\find.exe /i "myfile.txt"') DO SET fileDate=%%a

  2. untersuchen Sie die Ausgabe des Befehls in einem cmd.exe-Fenster. Um das zu tun, müssen Sie %% durch% ersetzen.
    FOR /f %a in ('dir ^|c:\windows\system32\find.exe /i "myfile.txt"') DO SET fileDate=%a
    Das kann Ihnen einige Ideen geben.

  3. Wenn das als leer erscheint, dann wieder, an einer Eingabeaufforderung, versuchen Sie dies:

    dir | c:\windows\system32\find.exe /i "myfile.txt"

Dies sollte Ihnen zeigen, was Sie sehen müssen.

Wenn Sie es immer noch nicht herausfinden können, bearbeiten Sie Ihren Beitrag, um zu sehen, was Sie von diesen Befehlen sehen, und jemand wird Ihnen helfen.

+0

mein Statement und (der Schritt 1 und 2) arbeiten an meinem Computer und jedem anderen Win Server 2003, an dem ich meine Hand bekommen kann. Könnte das ein Problem sein, wo es unter der Service-ID läuft und von einem Scheduler ausgelöst wird? –

+0

ja könnte es sein. Das Suchprogramm kann für eine andere Dienst-ID unterschiedlich sein, da es einen anderen Pfad hat. Am besten führen Sie diese Befehle unter der Service-ID aus, um die Ausgabe zu erfassen und zu untersuchen. – Cheeso

+1

Vor einigen Jahren hatten wir einige ähnliche Probleme bezüglich der Batch-Verarbeitung der Ausgabe des DIR-Befehls, wegen der unterschiedlichen Sprache des Befehlsprozessors (in unserem Fall arbeitete unsere Batch-Datei in win2000 Englisch und Spanisch, aber fehlgeschlagen in Deutsch). –

0

Welcher Ausgang (genau) gibt dir myfile.txt im aktuellen Verzeichnis? Was passiert, wenn Sie die Begrenzer setzen?

FOR /f "tokens=1,2* delims= " %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a 

(beachten Sie das Leerzeichen nach delims=)
(das Leben zu erleichtern, können Sie dies über die Befehlszeile tun kann durch %%a mit %a ersetzen)

1

Sie ein Dateien Datum geändert bekommen können auch VBSript

speichern Sie die oben genannten als mygetdate.vbs und auf der Kommandozeile

c:\test> cscript //nologo mygetdate.vbs myfile 
6

Sie können es

forfiles /M myfile.txt /C "cmd /c echo @fdate @ftime" 
0

Nützliche Referenz tun eingeben Datei zu erhalten Eigenschaften mit einer Batch-Datei, enthalten ist die letzte modifizierte Zeit:

FOR %%? IN ("C:\somefile\path\file.txt") DO (
    ECHO File Name Only  : %%~n? 
    ECHO File Extension  : %%~x? 
    ECHO Name in 8.3 notation : %%~sn? 
    ECHO File Attributes  : %%~a? 
    ECHO Located on Drive  : %%~d? 
    ECHO File Size   : %%~z? 
    ECHO Last-Modified Date : %%~t? 
    ECHO Parent Folder  : %%~dp? 
    ECHO Fully Qualified Path : %%~f? 
    ECHO FQP in 8.3 notation : %%~sf? 
    ECHO Location in the PATH : %%~dp$PATH:? 
) 
Verwandte Themen