W pliku wsadowym muszę wyodrębnić miesiąc, dzień, rok z polecenia date. Użyłem więc następującego, który zasadniczo analizuje polecenie Date, aby wyodrębnić jego podłańcuchy do zmiennej:
set Day=%Date:~3,2%
set Mth=%Date:~0,2%
set Yr=%Date:~6,4%
To wszystko świetnie, ale jeśli wdrożę ten plik wsadowy na maszynie z innymi ustawieniami regionalnymi / krajowymi, nie powiedzie się, ponieważ miesiąc, dzień i rok znajdują się w różnych lokalizacjach.
Jak mogę wyodrębnić miesiąc, dzień i rok niezależnie od formatu daty?
windows-7
windows-xp
batch
date
AngryHacker
źródło
źródło
Odpowiedzi:
Źródło: http://ss64.com/nt/syntax-getdate.html
Metoda 2 (pojedynczy cmd)
GetDate.cmd
Metoda 1 (cmd + czas)
GetDate.cmd
getdate.vbs
źródło
Set _second=00%%K
podczas wyodrębniania zwmic
i zeruj wiodącymi zerami, jak pozostałe.Windows XP i nowszy
getDate.cmd
Wynik
źródło
ECHO %year%-%month%-%day%
formatem zgodnym z ISO i systemem plików (nie wspominając o automatycznym sortowaniu według roku-miesiąca-dnia). :-).Wiem, że nie jest to dokładnie to, o co prosiłeś, ale używam portu Windows
date
aplikacji Linux z polecenia w pliku wsadowym, a następnie przypisuję wynik do zmiennej.Muszę jeszcze znaleźć sposób na wiarygodne ustalenie daty za pomocą tylko poleceń wsadowych.
źródło
Użyj tego pliku wsadowego dla formatu RRRR-MM-DD. Korzysta z narzędzia instrumentacji okien, które powinno być obecne we wszystkich najnowszych wersjach systemu Windows, aby uzyskać ciąg datetime niezależny od ustawień regionalnych.
Zapisz do pliku wsadowego w ścieżce (np.) C: \ windows \ rdate.bat, a następnie uzyskaj dostęp za pomocą CALL RDATE.BAT, aby ustawić zmienne. Alternatywnie skopiuj kod do pliku wsadowego.
Ten format daty jest odpowiedni dla nazw plików i logowania. Sortuje się poprawnie. Zmienna logtime dodaje zmienną data + czas jako RRRR-MM-DD-HHMMSS odpowiednią do rejestrowania aktywności pliku wsadowego z drugą dokładnością.
Dostosuj formaty daty i godziny, jak chcesz. REM echo ekranu podczas produkcji. Dwie liczby w każdym zaznaczeniu tekstu to zerowy indeks znaków początkowych i liczba znaków do skopiowania, np.% Datetime: ~ 0,4% przyjmuje 4-znakowy ciąg znaków rozpoczynający się od pozycji 0.
źródło
wmic os get localdatetime
Chociaż masz rację, że VS 2008 generuje plik wsadowy, możesz uruchomić prawie dowolny program, w tym skrypty Powershell i inne programy.
Edytować:
Oto kilka podobnych pytań:
/programming/1051845/visual-studio-2008-professional-build-process /programming/3049369/embed-application-compilation-time-stamp
Pierwotnie miałem to przenieść do SO. . .
źródło
Próbowałeś użyć
NET TIME \\%ComputerName%
zamiastDATE
? Myślę, żeNET TIME
ma to zapewnić dane w spójnym formacie niezależnie od ustawień regionalnych.źródło
net time
zawsze wysyłam dane w formacie m / d / rrrr. @AngryHacker, przy jakich ustawieniach nie działało to dla Ciebie?Dzięki postowi Shekhara działa to w razie potrzeby i zero wypełnienia czasu.
Dane wyjściowe: LogFile-20151113-0901.txt
źródło
To może być nieco nie na temat, ale tutaj jest plik .bat, który napisałem dla moich własnych zaplanowanych kopii zapasowych, a także wywoływania z działań postbuildowych w Visual Studio. Mam nadzieję, że niektórym się przyda.
Zapisz następujące elementy w pliku .bat
źródło
%date%
i%time%
, które są zależne od ustawień regionalnych i nie mogą być tak naprawdę analizowane w przewidywalny sposób, jak poprosił OP.