Batch file CMD Batch File读取目录中的文件,并使用名称中的内容创建新文件
如果我有一个包含两个文件的目录,如下所示: 123456789_File1.pdf 123456789_File2.pdf 我需要运行一个批处理文件,让我只读取文件名,而不是它的路径。创建另一个具有相同名称和不同扩展名的文件,其内容仅为名称的前9个字符。下面是我尝试过的,我不明白为什么这是不正确的?我已经做了几个小时的研究,似乎它应该是简单的,我觉得我只是错过了一些东西Batch file CMD Batch File读取目录中的文件,并使用名称中的内容创建新文件,batch-file,cmd,batch-processing,Batch File,Cmd,Batch Processing,如果我有一个包含两个文件的目录,如下所示: 123456789_File1.pdf 123456789_File2.pdf 我需要运行一个批处理文件,让我只读取文件名,而不是它的路径。创建另一个具有相同名称和不同扩展名的文件,其内容仅为名称的前9个字符。下面是我尝试过的,我不明白为什么这是不正确的?我已经做了几个小时的研究,似乎它应该是简单的,我觉得我只是错过了一些东西 FOR /R C:\Test\Files %%F in (*.*) do (set content=%%~nF & e
FOR /R C:\Test\Files %%F in (*.*) do (set content=%%~nF & echo %content:~0,9%>> %%~nF.txt)
这对我很有用:
@echo off
Setlocal EnableDelayedExpansion
FOR /R . %%F in (*.*) do (
set content=%%~nF
echo !content:~0,9! %%~nF.txt
)
请注意,就StackOverflow问题和答案而言,“这不正确”并不是对问题的准确描述,以供将来参考。对您的问题的精确描述是,在循环的每个迭代中,%content%
似乎包含与循环的第一个迭代中完全相同的内容,而与%F
的值无关
解决方案是启用“延迟扩展”并使用特殊的代码>分隔符而不是%
,以便享受延迟扩展的好处。这对我来说很有用:
@echo off
Setlocal EnableDelayedExpansion
FOR /R . %%F in (*.*) do (
set content=%%~nF
echo !content:~0,9! %%~nF.txt
)
请注意,就StackOverflow问题和答案而言,“这不正确”并不是对问题的准确描述,以供将来参考。对您的问题的精确描述是,在循环的每个迭代中,%content%
似乎包含与循环的第一个迭代中完全相同的内容,而与%F
的值无关
解决方案是启用“延迟扩展”并使用特殊的代码>分隔符而不是%
,以便享受延迟扩展的好处