jsmith6 Δημοσ. 29 Αυγούστου 2009 Δημοσ. 29 Αυγούστου 2009 Θέλω μέσα από ένα batch/cmd αρχείο να φτιάχνω καταλόγους (ή αρχεία) σύμφωνα με το date-time. Παράδειγμα: >20090829_150530 Μετά από αρκετό ψάξιμο βρήκα αυτό εδώ: >echo %date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~-11,2%%time:~-8,2%%time:~-5,2% το οποίο δουλεύει αλλά μόνο όταν η ώρα είναι διψήφια. Π.χ. το 15 (δηλαδή 3 το μεσιμέρι) θα δουλέψει. Αλλά το 3 (δηλαδή 3 το πρωί) δεν θα δουλέψει διότι ή εντωλή time δεν σημπληρώνει μηδενικά στους αριθμούς που δεν υπάρχουνε. Έτσι το 3 παραμένει 3 αντί να γίνει 03. Αυτό σημαίνει πως υπάρχει ένα κενό εκεί μέσα. Παράδειγμα: αν ήτανε 3 το πρωί, θα έπερνα το εξείς αποτέλεσμα: >20090829_ 3530 το οποίο είναι ακατάληλο για την χρήση που το θέλω. Αν έβρισκα τρόπο να συμπληρώσω το κενό με μηδέν, νομίζω θα δούλευε. Μάλλον το PowerShell θα έχει αυτή την δυνατότητα, αλλά το θέλω το script να είναι portable. Δεν έχω την πολυτέλεια να εγκαταθήστω PowerShell οπουδήποτε θέλω να το τρέξω. Καμιά ιδέα;
jsmith6 Δημοσ. 6 Σεπτεμβρίου 2009 Μέλος Δημοσ. 6 Σεπτεμβρίου 2009 Με λίγο ακόμα ψάξιμο βρήκα την λύση: > @echo off echo - echo NOTE: THIS METHOD *ONLY* WORKS ON WINDOWS XP/2000! echo - echo This sample demonstrates parsing batch file echo environment variables %%date%% and %%time%%. echo - echo %%date%% = %date% echo %%time%% = %time% echo - for /f "tokens=1-4 delims=/ " %%i in ("%date%") do ( set dow=%%i set month=%%j set day=%%k set year=%%l ) for /f "tokens=1-4 delims=.: " %%i in ("%time%") do ( set hour=%%i set minute=%%j set second=%%k set hundredth=%%l ) if %hour% LSS 10 set hour=0%hour% echo NOTE: Due to execution time, the following time echo may vary a little from the previous. echo - echo Sample usages: echo - echo Today is %dow% echo %year%-%month%-%day% %time% echo %year%%month%%day%T%hour%%minute%%second%.%hundredth% echo File_%year%-%month%-%day%_%hour%h_%minute%m_%second%s.txt echo - pause
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.