sasi v
asked on
i have a two files in a folder. i have a take a date alone from each file and save it in a variable, then call that variable. urgent pls
i have a two files in a folder. i have a take a date alone from each file and save it in a variable, then call that variable. urgent pls
ASKER
its possible to get a last modified date in cmd itself or without file name its possible to do get a date of the 2 filenames?
ASKER
my actual issue was
PRG-P375ICA2_2018_J1_BTT_0 10518.zip
PRG-P375ICA2_2018_J1_BTT_0 11218.zip
this my two files.. i have to read only 01518 and 011218 and save it in a variable and display it in CMD.
PRG-P375ICA2_2018_J1_BTT_0
PRG-P375ICA2_2018_J1_BTT_0
this my two files.. i have to read only 01518 and 011218 and save it in a variable and display it in CMD.
ASKER
@echo off
FOR %%A in (FileName1.txt) DO set DATE1=%%~tA
FOR %%B in (FileName2.txt) DO set DATE2=%%~tB
set VARIABLE=%DATE1% %DATE2%
echo %VARIABLE%
THIS not work out . i am gettin filename1.txt date and time, i need inside the filename1.txt i have 2 zip files
PRG-P375ICA2_2018_J1_BTT_0 10518.zip
PRG-P375ICA2_2018_J1_BTT_0 11218.zip.
i nned that mmddyy of the zip file(010518).
FOR %%A in (FileName1.txt) DO set DATE1=%%~tA
FOR %%B in (FileName2.txt) DO set DATE2=%%~tB
set VARIABLE=%DATE1% %DATE2%
echo %VARIABLE%
THIS not work out . i am gettin filename1.txt date and time, i need inside the filename1.txt i have 2 zip files
PRG-P375ICA2_2018_J1_BTT_0
PRG-P375ICA2_2018_J1_BTT_0
i nned that mmddyy of the zip file(010518).
my actual issue was
PRG-P375ICA2_2018_J1_BTT_010518.zip
PRG-P375ICA2_2018_J1_BTT_011218.zip
this my two files.. i have to read only 01518 and 011218 and save it in a variable and display it in CMD.
So are you saying that you want to extract those characters from the end of the file name, rather than get the last modified date from Windows for those files? Please try and explain better so that we can provide a solution.
»bp
If just looking for the right 6 characters of the file name then this could do that.
»bp
@echo off
setlocal EnableDelayedExpansion
for %%A in ("FileName1.txt") do (
set FileName=%%~nA
set FileDate=!FileName:~-6!
)
echo %FileDate%
»bp
ASKER
my actual issue was
PRG-P375ICA2_2018_J1_BTT_0 10518.zip
PRG-P375ICA2_2018_J1_BTT_0 11218.zip
this my two files.. i have to read only 01518 and 011218 and save it in a variable and display it in CMD.
So are you saying that you want to extract those characters from the end of the file name, rather than get the last modified date from Windows for those files? Please try and explain better so that we can provide a solution.
yes prew.. i need to extract those last 6 from the end of the file name, and store them into a 2 variables. then i need to compare both 010518 and 011218 dates and delete the old file in the folder.
PRG-P375ICA2_2018_J1_BTT_0
PRG-P375ICA2_2018_J1_BTT_0
this my two files.. i have to read only 01518 and 011218 and save it in a variable and display it in CMD.
So are you saying that you want to extract those characters from the end of the file name, rather than get the last modified date from Windows for those files? Please try and explain better so that we can provide a solution.
yes prew.. i need to extract those last 6 from the end of the file name, and store them into a 2 variables. then i need to compare both 010518 and 011218 dates and delete the old file in the folder.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
i think it will work prew.. thanks a lot. but can u explain the code if possible from here .
for /f "usebackq tokens=*" %%A in ("filename1.txt") do (
rem Get right 6 characters of file name and arrange in YYMMDD format
set FileName=%%~nA
set FileDate=!FileName:~-2!!Fi leName:~-6 ,4!
rem See if this is the oldest file so far, if so save it
if "!FileDate!" LSS "!OldestDate!" (
set OldestDate=!FileDate!
set OldestFile=%%~A
)
)
for /f "usebackq tokens=*" %%A in ("filename1.txt") do (
rem Get right 6 characters of file name and arrange in YYMMDD format
set FileName=%%~nA
set FileDate=!FileName:~-2!!Fi
rem See if this is the oldest file so far, if so save it
if "!FileDate!" LSS "!OldestDate!" (
set OldestDate=!FileDate!
set OldestFile=%%~A
)
)
for /f "usebackq tokens=*" %%A in ("filename1.txt") do (
The FOR /F command will read the "filename1.txt" file line by line, and assign the full content of each line to the loop variable %%A.
rem Get right 6 characters of file name and arrange in YYMMDD format
set FileName=%%~nA
Set the variable FileName to just the base file name (removes path, and extension)
set FileDate=!FileName:~-2!!Fi leName:~-6 ,4!
Sets the FileDate variable to the last 6 characters of the base file name, placing the YY in front of the MMDD parts.
rem See if this is the oldest file so far, if so save it
if "!FileDate!" LSS "!OldestDate!" (
Compares this files date to the oldest date we have found so far. I this files date is older then save its date and full path to variables as the oldest file.
set OldestDate=!FileDate!
Set OldestDate variable to this files date (from file name).
set OldestFile=%%~A
Set OldestFile variable to this files full path.
The FOR /F command will read the "filename1.txt" file line by line, and assign the full content of each line to the loop variable %%A.
rem Get right 6 characters of file name and arrange in YYMMDD format
set FileName=%%~nA
Set the variable FileName to just the base file name (removes path, and extension)
set FileDate=!FileName:~-2!!Fi
Sets the FileDate variable to the last 6 characters of the base file name, placing the YY in front of the MMDD parts.
rem See if this is the oldest file so far, if so save it
if "!FileDate!" LSS "!OldestDate!" (
Compares this files date to the oldest date we have found so far. I this files date is older then save its date and full path to variables as the oldest file.
set OldestDate=!FileDate!
Set OldestDate variable to this files date (from file name).
set OldestFile=%%~A
Set OldestFile variable to this files full path.
ASKER
thanks for the explanation.
but oldest file searching in local drive only.
rem Delete the oldest file
echo Deleting oldest file "%OldestFile%"
del "%OldestFile%"
i need to delete that oldest file in some other drive, so for that what need to add in code?
this is the full code:
SET BackupPath=\\ecc9000203\pr oj\DI_PMTI _SE\PAT\PA T\PATFiles
REM mkdir %ProgramPath%\%programName %\
echo off
TITLE=%programName%
mkdir %BackupPath%
dir /a =%BackupPath%\%programName %\ /b > filename1.txt
@echo off
setlocal EnableDelayedExpansion
rem Initialize variables
set OldestDate=999999
set OldestFile=
rem Read each line from list file
for /f "usebackq tokens=*" %%A in ("filename1.txt") do (
rem Get right 6 characters of file name and arrange in YYMMDD format
set FileName=%%~nA
set FileDate=!FileName:~-2!!Fi leName:~-6 ,4!
rem See if this is the oldest file so far, if so save it
if "!FileDate!" LSS "!OldestDate!" (
set OldestDate=!FileDate!
set OldestFile=%%~A
)
)
rem Delete the oldest file
echo Deleting oldest file "%OldestFile%"
del "%OldestFile%"
thank you,,,
but oldest file searching in local drive only.
rem Delete the oldest file
echo Deleting oldest file "%OldestFile%"
del "%OldestFile%"
i need to delete that oldest file in some other drive, so for that what need to add in code?
this is the full code:
SET BackupPath=\\ecc9000203\pr
REM mkdir %ProgramPath%\%programName
echo off
TITLE=%programName%
mkdir %BackupPath%
dir /a =%BackupPath%\%programName
@echo off
setlocal EnableDelayedExpansion
rem Initialize variables
set OldestDate=999999
set OldestFile=
rem Read each line from list file
for /f "usebackq tokens=*" %%A in ("filename1.txt") do (
rem Get right 6 characters of file name and arrange in YYMMDD format
set FileName=%%~nA
set FileDate=!FileName:~-2!!Fi
rem See if this is the oldest file so far, if so save it
if "!FileDate!" LSS "!OldestDate!" (
set OldestDate=!FileDate!
set OldestFile=%%~A
)
)
rem Delete the oldest file
echo Deleting oldest file "%OldestFile%"
del "%OldestFile%"
thank you,,,
I think you probably want one of the two below, but it's hard to know since you reference %ProgramName% in your script but I don't see it set anyplace.
»bp
echo Deleting oldest file "%BackupPath%\%programName%\%OldestFile%"
del "%BackupPath%\%programName%\%OldestFile%"
echo Deleting oldest file "%BackupPath%\%OldestFile%"
del "%BackupPath%\%OldestFile%"
»bp
ASKER
hi prew
if i need to use call function to call the code means what i need to use for u r code??
Rem PAT BTT files
Del "%BackupPath%\PAT BTT Text Files\%programName%\Old\"
echo Old File removed
Move "%BackupPath%\PAT BTT Text Files\%programName%\New\*. txt" "%BackupPath%\PAT BTT Text Files\%programName%\Old\"
copy "%ProgramPath%\%programNam e%\%dateFi le%\*_BTT. txt" "%BackupPath%\PAT BTT Text Files\%programName%\New\"
if i need to use call function to call the code means what i need to use for u r code??
Rem PAT BTT files
Del "%BackupPath%\PAT BTT Text Files\%programName%\Old\"
echo Old File removed
Move "%BackupPath%\PAT BTT Text Files\%programName%\New\*.
copy "%ProgramPath%\%programNam
Like this:
»bp
call :DeleteOldest "%BackupPath%"
exit /b
:DeleteOldest [folder-path]
setlocal EnableDelayedExpansion
rem Initialize variables
set OldestDate=999999
set OldestFile=
rem Read each line from list file
for /f "usebackq tokens=*" %%A in ("%~1\filename1.txt") do (
rem Get right 6 characters of file name and arrange in YYMMDD format
set FileName=%%~nA
set FileDate=!FileName:~-2!!FileName:~-6,4!
rem See if this is the oldest file so far, if so save it
if "!FileDate!" LSS "!OldestDate!" (
set OldestDate=!FileDate!
set OldestFile=%%~A
)
)
rem Delete the oldest file
echo Deleting oldest file "%~1\%OldestFile%"
del "%~1\%OldestFile%"
exit /b
»bp
ASKER
hi prew,
in two files we can delete the old files from your code.
for /f "usebackq tokens=*" %%A in ("filename1.txt") do (
rem Get right 6 characters of file name and arrange in YYMMDD format
set FileName=%%~nA
set FileDate=!FileName:~-2!!Fi leName:~-6 ,4!
rem See if this is the oldest file so far, if so save it
if "!FileDate!" LSS "!OldestDate!" (
set OldestDate=!FileDate!
set OldestFile=%%~A
)
)
suppose, if its a folder like 021318 and 021518 folder. how to delete the 021318 folder in bat code??
which means old folder from two folders??
in two files we can delete the old files from your code.
for /f "usebackq tokens=*" %%A in ("filename1.txt") do (
rem Get right 6 characters of file name and arrange in YYMMDD format
set FileName=%%~nA
set FileDate=!FileName:~-2!!Fi
rem See if this is the oldest file so far, if so save it
if "!FileDate!" LSS "!OldestDate!" (
set OldestDate=!FileDate!
set OldestFile=%%~A
)
)
suppose, if its a folder like 021318 and 021518 folder. how to delete the 021318 folder in bat code??
which means old folder from two folders??
The same logic will work, just change:
del "%~1\%OldestFile%"
to:
rmdir /s /q "%~1\%OldestFile%"
»bp
del "%~1\%OldestFile%"
to:
rmdir /s /q "%~1\%OldestFile%"
»bp
ASKER
thank you,,,
while moving the files i need a create a folder then move the folder from my local to that created folder.
so i need to use mkdir??
while moving the files i need a create a folder then move the folder from my local to that created folder.
so i need to use mkdir??
MKDIR is used to create a new folder, yes.
»bp
»bp
Which of the dates do you want from the files: Created, Last Accessed, or Last Written?
How do you want these dates to be presented? Space in between, on separate lines, or some other layout?
Here is a very rough example of how you can read one of the dates from each file, set them in a variable, and display them side-by-side with a space in between. You would have to put the batch file in the same folder as the two files and replace their proper names in the batch file.
@echo off
FOR %%A in (FileName1.txt) DO set DATE1=%%~tA
FOR %%B in (FileName2.txt) DO set DATE2=%%~tB
set VARIABLE=%DATE1% %DATE2%
echo %VARIABLE%