|
Answer» 01-06-20080559100001.002 01-06-20080559130059.002 01-06-20080559170050.002 01-06-20080559200051.002 01-06-20080559210051.002 01-06-20080559240052.002 01-06-20080559280006.002 01-06-20080559310055.002 01-06-20080559350058.002 01-06-2008055942099.002 01-06-20080559520001.001 01-06-20080559550059.001 01-06-20080559590050.001 01-06-20080600020051.001 01-06-20080600030051.001 01-06-20080600060052.001 01-06-20080600100006.001 01-06-20080600130055.001 01-06-20080600170058.001 01-06-2008060024099.001 02-06-20080559100001.002 02-06-20080559130059.002 02-06-20080559170050.002 02-06-20080559200051.002 02-06-20080559210051.002 02-06-20080559240052.002 02-06-20080559280006.002 02-06-20080559310055.002 02-06-20080559350058.002 02-06-2008055942099.002 02-06-20080559520001.001 02-06-20080559550059.001 02-06-20080559590050.001 02-06-20080600020051.001 02-06-20080600030051.001 02-06-20080600060052.001 02-06-20080600100006.001 02-06-20080600130055.001 02-06-20080600170058.001 02-06-2008060024099.001 03-06-20080559100001.002 03-06-20080559130059.002 03-06-20080559170050.002 03-06-20080559200051.002 03-06-20080559210051.002 03-06-20080559240052.002 03-06-20080559280006.002 03-06-20080559310055.002 03-06-20080559350058.002 03-06-2008055942099.002 03-06-20080559520001.001 03-06-20080559550059.001 03-06-20080559560059.001 03-06-20080559590050.001 03-06-20080600020051.001 03-06-20080600030051.001 03-06-20080600060052.001 03-06-20080600100006.001 03-06-20080600130055.001 03-06-20080600140055.001 03-06-20080600170058.001 03-06-2008060024099.001 04-06-20080559100001.002 04-06-20080559130059.002 04-06-20080559170050.002 04-06-20080559210051.002 04-06-20080559240052.002 04-06-20080559280006.002 04-06-20080559310055.002 04-06-20080559350058.002 04-06-2008055942099.002 04-06-20080559520001.001 04-06-20080559550059.001 04-06-20080559590050.001 04-06-20080600030051.001 04-06-20080600060052.001 04-06-20080600100006.001 04-06-20080600130055.001 04-06-20080600170058.001 04-06-2008060024099.001 05-06-20080559100001.002 05-06-20080559130059.002 05-06-20080559170050.002 05-06-20080559210051.002 05-06-20080559240052.002 05-06-20080559280006.002 05-06-20080559310055.002 05-06-20080559350058.002 05-06-2008055942099.002 05-06-20080559520001.001 05-06-20080559550059.001 05-06-20080559590050.001 05-06-20080600020051.001 05-06-20080600030051.001 05-06-20080600060052.001 05-06-20080600100006.001 05-06-20080600130055.001 05-06-20080600170058.001 05-06-2008060024099.001 06-06-20080559100001.002 06-06-20080559130059.002 06-06-20080559170050.002 06-06-20080559200051.002 06-06-20080559210051.002 06-06-20080559240052.002
That is an example of a folder of files i have. however i need to take the first number of every file and take 1 from it. so the first file will change from 01-06-20080559100001.002 to 00-06-20080559100001.002
i have made a phpscript to do this. but now i need a batch file for when i dont have access to the internet
Any ideas?PHP? How can you use PHP to do it?Moved to appropriate section.
Quote <?php $dir = './Raw'; // Path to folder containing files to be renamed $isleapyear = "y"; // If it is a LEAP year put in y, otherwise put in n ######################################### ######################################### #########DO NOT EDIT BELOW THIS LINE##### ######################################### ######################################### $filename = $dir.'/DONE.txt';
if (file_exists($filename)) { require ("makezip.inc.php");
$zipfile = new zipfile(); $filedata = implode("", file("makezip.inc.php"));
$files2 = array_diff(scandir($dir), array('.', '..')); foreach($files2 as $value) : $zipfile->add_file($filedata, "./Raw/$value"); endforeach;
header("Content-type: application/octet-stream"); header("Content-disposition: attachment; filename=zipfile.zip"); echo $zipfile->file();
} else { $files2 = array_diff(scandir($dir), array('.', '..')); $i="1"; echo "Folder: $dir "; echo "Please Refresh the webpage once it finishes loading, it will take upto 2 MINUTES to finish refreshing, a zip file will automatically start downloading. Enjoy :-) "; foreach($files2 as $value) : $pieces = explode("-", $value); echo "$i Renamed "; $new = $pieces[0] -1; if($new < 10) { $new = "0".$new; } $oldfile = $dir."/".$pieces[0]."-".$pieces[1]."-".$pieces[2]; ##### adjust month for 00 dates ####### if ($new == "00"){
if ($pieces[1] == "01") { $new = "31"; // LAST DATE OF JANURARY } if ($pieces[1] == "02") { if ($isleapyear == "y") { $new = "29"; // LAST DATE OF FEB on leap year } else { $new = "28"; // LAST DATE OF FEB not on leap year } } if ($pieces[1] == "03"){ $new = "31"; // LAST DATE OF MARCH } if ($pieces[1] == "04"){ $new = "30"; // LAST DATE OF APRIL } if ($pieces[1] == "05"){ $new = "31"; // LAST DATE OF MAY } if ($pieces[1] == "06"){ $new = "30"; // LAST DATE OF JUNE } if ($pieces[1] == "07"){ $new = "31"; // LAST DATE OF JULY } if ($pieces[1] == "08"){ $new = "31"; // LAST DATE OF AUG } if ($pieces[1] == "09"){ $new = "30"; // LAST DATE OF SEPT } if ($pieces[1] == "10"){ $new = "31"; // LAST DATE OF OCT } if ($pieces[1] == "11"){ $new = "30"; // LAST DATE OF NOV } if ($pieces[1] == "12"){ $new = "31"; // LAST DATE OF DEC }
$newmonth = $pieces[1] - 1; $newfile = $dir."/".$new."-".$newmonth."-".$pieces[2]; rename($oldfile, $newfile); ############################# } else { $newfile = $dir."/".$new."-".$pieces[1]."-".$pieces[2]; rename($oldfile, $newfile); } $i = $i +1; endforeach;
$handle = fopen($filename, "w+"); fclose($handle); } ?>
thats how i did it with php. there is alot of extra stuff in that script. hopefully someone knows howto do it in dos.Did you use that PHP script to change files on a web server? Or a home server?i uploaded files to the sever and it would rename them all at once. but now i need to be able to rename files on different pcs when im onsite. so i cant just install easy php for example on the pc to rename the files. a batch file would be perfectA batch script can make your LIFE easier and your codes more smaller. Or you can use vbscript to do that for you. id love a batch script. PROBLEM is i have NO idea how to make it. im good with php and bash. not dosThis batch script will probably do it. To rename the files remove the :: on the Ren line after testing to ensure it will do what you want. I have only tested it using six filenames. You will also have to reset the in_file variable to suit your source directory.
Note: The code does not cater for space(s) in the path\filename, the Ren command will fail.
Good LUCK
Code: [Select]echo off cls setlocal
set in_file=d:\temp\badname\ for /f "tokens=*" %%a in ('dir /b %in_file%') do call :rename %%a goto :EOF
:rename set oldname=%1 set /a newdate=1%oldname:~0,2%-101 if %newdate% lss 10 set newname=0%newdate%%oldname:~2% & goto rename set newname=%newdate%%oldname:~2%
:rename :: ren %in_file%%oldname% %newname%
echo Old file name = %oldname% echo New file name = %newname% echo.
|