Newsgroup: it.comp.lang.visual-basic
Titolo: creare una cartella con la data

Come si può creare una cartella usando come nome la data , cioè ad esempio 
C:\20070920  ( per il 20 settembre 2007 ) ?
L'ho visto fare da un programma (scritto in VB ).
Se uso la variabile %date%  , mi crea tre sottocartelle annidate , cioè 
C:\20\09\2007
Grazie e ciao 

"Gabriele" <78...@rtry.yu> ha scritto

una cosa tipo
cstr(format(year(date),"0000") & cstr(format(month(date),"00") &
cstr(format(day(date),"00")
controlla cstr e format, sono stanchissimo.
hth, ciao, a.

 C:\20070920  ( per il 20 settembre 2007 ) ?
Se usi 
VB.NET
 puoi fare una cosa del genere:
     Dim s As String = DateTime.Today.ToString("yyyMMdd")
     IO.Directory.CreateDirectory(IO.Path.Combine("C:\temp", s))
In VB6 non so.
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL


usa un replace (VB2005)
            Dim codeid As String
            codeid = My.Computer.Clock.LocalTime
            codeid = codeid.Replace("/", "")
            codeid = codeid.Replace(".", "")
            codeid = codeid.Replace(" ", "")
           My.Computer.FileSystem.WriteAllText("c:\" & codeid &
".txt","il testoda scrivere")
lo stesso vale per creare cartelle, io lo uso per creare id univoci,
files, cartelle tu fai quello che vuoi.

             codeid = codeid.Replace(" ", "")
Dimmi che stai scherzando :-)



NO, ma ripeto sono alle prime armi, per ora nessun problema con questo
metodo,magari e rozzo ma discretamente funzionale, accetto critiche e
consigli.

 consigli.
E' inutilmente prolisso,non ottimizzato e poco affidabile, considerando 
anche che il formato delle date dipende dalle impostazioni internazionali.
Ciao 

 consigli.
Prima di tutto fai una catena di replace, quando puoi semplicemente 
passare una stringa di formattazione per estrarre e concatenare le 
diverse parti delle data a tuo piacere (hai guardato la mia soluzione?).
Poi ti sei mai chiesto cosa succederebbe se lo facessi girare su un 
sistema sul quale sono stati cambiati i separatori per data e/o orario? 
Oppure se la data fosse rappresentata in ordine diverso, ad esempio in 
formato anglosassone?
Poi ti consiglio di mettere Option Strict a ON nei tuoi progetti :-)



Suppongo che tu abbia tentato usando un file batch, visto che parli di
%date%...
Purtroppo né il command di Windows né tantomeno VBScript hanno una funzione
di formattazione custom delle date.
Però almeno in VBScript è possibile manipolare un po' le stringhe.
Ti crei un file VBS con le seguenti istruzioni:
Dim fso
 set fso=CreateObject("Scripting.FileSystemObject")
 fso.CreateFolder "c:\" & Right("0000" & Year(Date), 4) & Right("00" &
Month(Date), 2) & Right("00" & Day(Date), 2)
In VB6 era banale: MkDir "c:\" & Format(Date, "yyyymmdd")
Bye
Raf


questo č lo script , dove potrei  aggiungere il tuo codice ?
XCOPY "C:\PROGRAMMI\MICROSOFT SQL SERVER\MSSQL.1\MSSQL\DATA\*.*" C:\%date%\ 
/S/Y/V > C:\RPT_BCK.TXT
grazie e ciao 

 Month(Date), 2) & Right("00" & Day(Date), 2)
mi dice errore sintassi riga 3 carattere 71  , che sarà ??
ciao 

"gabriele" <78...@rtry.yu> ha scritto nel messaggio 
news:46f2f186$0$36444$4faf...@reader5.news.tin.it...

forse perchè andava a capo , l'ho messo in una riga unica e adesso funziona 
!
però non sovrascrive il file , si blocca e dice GIA' esistente .....bisogna 
aspettare domani che cambia la data !
Rimane il problema di integrare tale codice nel mio script sottoriportato , 
grazie ... 

 sottoriportato , grazie ...
Conviene fare il contrario, ossia spostare l'operazione di copia (con XCOPY)
invocandola dentro al file VBS, dopo aver eventualmente creato la cartella.
    sCmd = "XCOPY ""C:\PROGRAMMI\MICROSOFT SQL
SERVER\MSSQL.1\MSSQL\DATA\*.*"" " & sPath & " /S/Y/V > C:\RPT_BCK.TXT"
    Dim sh
    Set sh = CreateObject("WScript.Shell")
    sh.Run sCmd, 1
Se vuoi che lo script attenda la fine del comando di copia (magari perché
deve esegure altre operazioni solo dopo che la copia è terminata), aggiungi
un terzo parametro:
    sh.Run sCmd, 1, True
Alla fine lo script diventa:
Dim fso, sh
    Set fso=CreateObject("Scripting.FileSystemObject")
    sPath = "C:\Temp\" & Right("0000" & Year(Date),4) _
     & Right("00" & Month(Date),2)& Right("00" & Day(Date),2)
    If Not fso.FolderExists(sPath) Then
        fso.CreateFolder sPath
    End If
    sCmd = "cmd /c XCOPY ""C:\PROGRAMMI\MICROSOFT SQL
SERVER\MSSQL.1\MSSQL\DATA\*.*"" " & sPath & " /S/Y/V > C:\RPT_BCK.TXT"
    Set sh = CreateObject("WScript.Shell")
    sh.Run sCmd, 1, True
    WScript.Echo "Copia terminata"
Per approfondire:
http://msdn2.microsoft.com/en-us/library/ms950396.aspx
Bye
Raf


grazie , delle info , funziona!
PS :nella documentazione linkata c'è scritto che per concatenare due comandi 
bisogna usare && .
però non riesco a concatenare due comandi XCOPY  per copiare da due percorsi 
distinti di origine : per ora ho risolto creando due file VBS distinti ....
Dovrei concatenare due XCOPY :
XCOPY ""C:\PROGRAMMI\dati\*.*"" " & sPath & " /S/Y/V > C:\RPT_BCK.TXT"
XCOPY ""C:\PROGRAMMI\ufficio\*.*"" " & sPath & " /S/Y/V > C:\RPT_BCK.TXT"
come li posso trasformare in un comando unico oppure concatenare  ?
Grazie

 Grazie
Basta che esegui 2 volte il metodo Run, usando ogni volta una stringa di
comando diversa, no?
    sCmd = "cmd /c XCOPY ""C:\PROGRAMMI\dati\*.*"" " & sPath & " /S/Y/V >
C:\RPT_BCK.TXT"
    sh.Run sCmd, 1, True
    sCmd = "cmd /c XCOPY ""C:\PROGRAMMI\ufficio\*.*"" " & sPath & " /S/Y/V >
C:\RPT_BCK.TXT"
    sh.Run sCmd, 1, True
Bye
Raf


è vero , grazie !
Ciao
( la seconda riga l'ho dovuta modificare  in sh1.Run  sCmd,etc.... perchè 
sennò quando eseguo lo script mi dice che è già stato definito ...)