Win 7: CMD batch file for creating directories based on filenames

萝らか妹 提交于 2019-12-24 10:58:41

问题


I'm working on a CMD line batch file in a Win7 environment that will create directories based upon the filenames listed in a directory.

I am using this code, but the output created is partial and incomplete with only

 setlocal enabledelayedexpansion
 for /r %%i in (*.wav) do (
     set filename1=%%i
     set folder1=!filename1:~4,10!
     mkdir !folder1!
      )

 pause

I have this script saved as a CMD file in text format in the source directory, on a local harddrive, though it is in a subdirectory. The directory output is partial and broken, with garbled output and the numbers of directories created does not match the number of files, and the created directories seem to nest. I've researched this and can't seem to find a definitive answer.


回答1:


It's not entirely clear what it is you are trying to accomplish. Are you trying to create a directory within the same directory containing the wav file, just without the .wav extension? If so, you're missing some quotation marks and you're stripping the wrong end of the filename off. If that's what you are trying to accomplish, it can actually be done with a single command, no batch script needed. Type this at the command prompt:

for /r %I in (*.wav) do mkdir "%~pnI"

Of course, if you still want it in a batch script, use %%I and %%~pnI with double percents instead of single. See the last couple of pages of help for for an explanation of how %%~pnI works.



来源:https://stackoverflow.com/questions/15119194/win-7-cmd-batch-file-for-creating-directories-based-on-filenames

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!