Tom's Guide | Tom's Hardware | Tom's Games
![]() |
![]() |
![]() |
Hello
I want to make a new folder to each file according to its creation date
This is what I got so far
cd C:\Test\
for /f "skip=5 tokens=1-5" %%i in ('dir /tc /a-d') do (
echo %%i >> output_file
echo %%m >> output_file
set dt = %%i
echo %dt% >>output_file
)but instead of dt value I get ECHO IS ON
(I have tried to set echo off but still, I didn't got dt value)How can I get dt value?
Thank you very much

H:\>set /? Displays, sets, or removes cmd.exe environment variables. SET [variable=[string]] . . . . . . . . . . . . . . . . . . . . . . . Finally, support for delayed environment variable expansion has been added. This support is always disabled by default, but may be enabled/disabled via the /V command line switch to CMD.exe. See CMD /? Delayed environment variable expansion is useful for getting around the limitations of the current expansion which happens when a line of text is read, not when it is executed. The following example demonstrates the problem with immediate variable expansion: set VAR=before if "%VAR%" == "before" ( set VAR=after if "%VAR%" == "after" @echo If you see this, it worked ) would never display the message, since the %VAR% in BOTH IF statements is substituted when the first IF statement is read, since it logically includes the body of the IF, which is a compound statement. So the IF inside the compound statement is really comparing "before" with "after" which will never be equal. Similarly, the following example will not work as expected: set LIST= for %i in (*) do set LIST=%LIST% %i echo %LIST% in that it will NOT build up a list of files in the current directory, but instead will just set the LIST variable to the last file found. Again, this is because the %LIST% is expanded just once when the FOR statement is read, and at that time the LIST variable is empty. So the actual FOR loop we are executing is: for %i in (*) do set LIST= %i which just keeps setting LIST to the last file found. Delayed environment variable expansion allows you to use a different character (the exclamation mark) to expand environment variables at execution time. If delayed variable expansion is enabled, the above examples could be written as follows to work as intended: set VAR=before if "%VAR%" == "before" ( set VAR=after if "!VAR!" == "after" @echo If you see this, it worked ) set LIST= for %i in (*) do set LIST=!LIST! %i echo %LIST%See also: SETLOCAL /?

![]() |
Windows Programing
|
Random command
|

This post is quite old and has been locked from receiving new replies. Please create a new posting instead.
| Ads by Google |