Προς το περιεχόμενο

batch/cmd: φτίαχνοντας καταλόγους σύμφωνα με το date-time stamp


jsmith6

Προτεινόμενες αναρτήσεις

Δημοσ.

Θέλω μέσα από ένα 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 οπουδήποτε θέλω να το τρέξω.

 

Καμιά ιδέα;

Δημοσ.

Με λίγο ακόμα ψάξιμο βρήκα την λύση:

 

>

@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

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...