folder to each file according to its creatio

June 22, 2009 at 07:12:35
Specs: Windows XP

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

See More: folder to each file according to its creatio

Report •

June 22, 2009 at 07:32:30
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 /?

Report •
Related Solutions

Ask Question