我有350个文件夹,其间有19,000个文件,需要在你的帮助下做一点cmd
魔法。
我有一个要运行的批处理,它会将文件名添加到文件的末尾 - 后面总是在第5行。
我遇到的问题是它只会运行我指向的文件夹中的文件而不是递归的子目录。
我找不到允许/f
和/r
同时投放的解决方法,forfiles
似乎不喜欢令牌。在Dir /s
附近的任何地方插入时DIR
给出了错误的语法。
守则
@ECHO OFF
SETLOCAL EnableDelayedExpansion
cd ./Data/*
for /f "tokens=*" %%a IN ('DIR /b /a-d "*.*"') DO (
type %%a >>"Temp.txt"
echo %%a>>Temp.txt
del %%a
ren "Temp.txt" "%%a"
)
pause
文件/文件夹示例
\Data\BatchFile.bat
\Data\file.txt (will change)
\Data\1\file.txt (won't change)
\Data\2\file.txt (won't change)
etc
任何帮助将不胜感激。我目前陷入困境,似乎无法找到解决方法。我将及时了解我的进展情况。
答案 0 :(得分:1)
将
cd .\Data
for /f "delims=" %%a IN ('DIR /s /b /a-d "*.*"') DO echo %%a>>"%%a"
执行您想要执行的操作(将文件名附加到树中每个文件的末尾)
请注意/
是一个开关,' \'目录分隔符。有时您可以使用/
代替\
但不总是......
cd .\data
和cd data
也会做同样的事情。 cd
将当前目录("已记录的"目录)更改为目标。添加\*
部分是没有意义的 - 您一次只能登录到一个目录。
不清楚"第5行"或" ---"与此事有关。它们未在您提供的代码中解决。
for /f "delims=" %%a IN ('DIR /s /b /a-d "*.*"') DO echo %%~nxa>>"%%a"
将仅附加文件名+扩展名(无路径)