Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    (DOS) batch filename date

    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?

  2. #2
    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

  3. #3
    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.)

  4. #4
    basta che rinomini in automatico con quel formato.

  5. #5
    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.)

  6. #6
    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.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.