ho necessità di rinominare i file TXT creati con un sistema automatico da miofile.txt a miofile_20040906.txt o miofile_2004_09_06.txt
qualcuno ha qualche idea?
ho necessità di rinominare i file TXT creati con un sistema automatico da miofile.txt a miofile_20040906.txt o miofile_2004_09_06.txt
qualcuno ha qualche idea?
ho trovato un codice che fa il set delle variabili e funziona fino ad un certo punto. ma dopo non so perchè non funziona!
è questo
REM @echo off
setlocal
set yyyy=
set $tok=1-3
for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set $d1=%%u
if "%$d1:~0,1%" GTR "9" set $tok=2-4
for /f "tokens=%$tok% delims=.:/-, " %%u in ('date /t') do (
for /f "skip=1 tokens=2-4 delims=/-,()." %%x in ('echo.^|date') do (
set %%x=%%u
set %%y=%%v
set %%z=%%w
set $d1=
set $tok=))
if "%yyyy%"=="" set yyyy=%yy%
if /I %yyyy% LSS 100 set /A yyyy=2000 + 1%yyyy% - 100
set /a mm=1%mm% - 100
set /a dd=1%dd% - 100
echo ren C:\miofile.txt C:\miofile%dd%-%mm%-%yyyy%.txt
Per forza un batch o anche un programma C va bene?
Il centro dell'attenzione non è sempre un buon posto in cui trovarsi
Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)
basta che rinomini in automatico con quel formato.
Allora usa questo codice,compilatelo con dev-c++ (disponibile free sulla rete ) o un'altro compilatore c.Dovrebbe funzionare su tutte le versioni di windows da 95 in poi.Se hai problemi fammi sapere,ciao:
codice:BOOL ExtractNameAndExt(const char* fullName,char* name, char* extension) { unsigned int i,j,k,len; if(!fullName) return FALSE; len = strlen(fullName); for(i = 0;i < len && fullName[i] != '.';i++); if( i < len) { memmove(name,fullName,i); memmove(extension,fullName+i,len-i); name[i] = '\0'; extension[len - i] = '\0'; return TRUE; } return FALSE; } int main( int argc , char *argv[]) { SYSTEMTIME timeStruct; HFILE fileHandle; OFSTRUCT ofStruct; int result; char * name = (char*)malloc(OFS_MAXPATHNAME); char * ext = (char*)malloc(OFS_MAXPATHNAME); char *newFileName =(char*) malloc(OFS_MAXPATHNAME ); if(argc < 2) { printf("Specifica il file!"); exit(-1); } fileHandle = OpenFile(argv[1],&ofStruct,OF_EXIST); if(fileHandle == HFILE_ERROR) { printf("Il file non esiste"); exit(-1); } GetLocalTime(&timeStruct); if(ExtractNameAndExt(argv[1],name,ext)) { sprintf(newFileName,"%s_%04d_%02d_%02d%s",name,timeStruct.wYear, timeStruct.wMonth, timeStruct.wDay,ext); result = rename( argv[1], newFileName ); if( result != 0 ) printf( "Impossibile rinominare" ); } else { printf("Errore!"); exit(-1); } return 0; }
Il centro dell'attenzione non è sempre un buon posto in cui trovarsi
Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)
Rileggendo mi è venuto un dubbio:ma cosa intendi per i file txt,tutti quelli del pc o uno solo passato come argomento al programma?Perchè il mio codice genera un eseguibile che prende come argomento un singolo nome di file da rinominare ma ora stavo pensando che in effetti la sua utilità è minima perchè potresti farlo a mano su un singolo file.Fammi sapere.Nell'altro caso ci sarà bisogno di qualche modifica.
Il centro dell'attenzione non è sempre un buon posto in cui trovarsi
Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)