Question

Example, have files file1.txt, file2.txt and file3.txt in one folder. Want to copy each file into its own folder, eg, file1.txt goes into file1 folder, file2.txt goes into file2 folder. The folders have already been created.

No correct solution

OTHER TIPS

Assuming the files are all in C:\oldfolder and new folders are in C:\newfolders\

CD "C:\OLDFOLDER"
for %%a in (*.*) Do copy "%%a" "C:\newfolder\%%~na\%%a"

The for loop loops through all the files in oldfolder, and then copies each one to

C:\Newfolder\{filenamewithoutextension}\{filename.ext}

The %%~na is a way to get just the filename without the extension. The "n" signifies "name" and the a is the for loop variable. The are many file-path substitutions possible:

%~I         - expands %I removing any surrounding quotes (")
%~fI        - expands %I to a fully qualified path name
%~dI        - expands %I to a drive letter only
%~pI        - expands %I to a path only
%~nI        - expands %I to a file name only
%~xI        - expands %I to a file extension only
%~sI        - expanded path contains short names only
%~aI        - expands %I to file attributes of file
%~tI        - expands %I to date/time of file
%~zI        - expands %I to size of file
%~$PATH:I   - searches the directories listed in the PATH
               environment variable and expands %I to the
               fully qualified name of the first one found.
               If the environment variable name is not
               defined or the file is not found by the
               search, then this modifier expands to the
               empty string

The modifiers can be combined to get compound results:

%~dpI       - expands %I to a drive letter and path only
%~nxI       - expands %I to a file name and extension only
%~fsI       - expands %I to a full path name with short names only
%~dp$PATH:I - searches the directories listed in the PATH
               environment variable for %I and expands to the
               drive letter and path of the first one found.
%~ftzaI     - expands %I to a DIR like output line

In Linux you could type

for i in *.txt; do mv $i `basename $i .txt`/; done

Pay attention to the spaces.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top