使用'for'循环迭代目录中的所有文件。

14 浏览
0 Comments

使用'for'循环迭代目录中的所有文件。

如何使用for循环遍历目录中的每个文件?\n我如何判断某个条目是目录还是文件?

0
0 Comments

问题的原因:在这个例子中,原因是作者想要遍历一个文件夹中的所有文件,并获取文件的内容、名称等信息。

解决方法:作者使用了一个for循环来实现这个需求。在循环中,作者使用了set命令来读取文件的内容,并使用echo命令打印文件的完整路径、名称和内容。

文章内容如下:

为了遍历一个文件夹中的所有文件,可以使用for循环:

for %%f in (directory\path\*) do ( something_here )

在我的案例中,我还想要获取文件的内容、名称等信息。这导致了一些问题,我认为我的用例可能会对其他人有帮助。下面是一个循环,它从一个文件夹中的每个'.txt'文件中读取信息,并允许你对它进行操作(比如使用setx命令)。

OFF

setlocal enabledelayedexpansion

for %%f in (directory\path\*.txt) do (

set /p val=<%%f

echo "fullname: %%f"

echo "name: %%~nf"

echo "contents: !val!"

)

限制:val<=%%f只会获取文件的第一行。

啊,多行的例子。谢谢你提供这个例子!

你不需要“结束”循环。在我的例子中,括号内的所有内容(echo等)将会针对文件夹中的每个'*.txt'文件运行一次。我认为你要找的答案可能在这里更好地解释了:stackoverflow.com/questions/1355791/…

我之前尝试使用脚本运行一些maven命令,但它一直运行成无限循环,所以我提出了问题。现在我在循环中添加了一个exit,并解决了问题。

很高兴你找到了解决方法!

0
0 Comments

问题的原因是无法同时迭代文件和子目录。解决方法是使用cygwin,并使用其中的bash脚本来实现更多功能。此外,还可以利用MS Windows的内置帮助来查找cmd命令行语法的描述。具体的解决方案如下:

1. 迭代当前目录中的文件:

for %f in (.\*) do %f

2. 迭代当前目录中的子目录:

for /D %s in (.\*) do %s

3. 迭代当前目录及其所有子目录中的文件:

for /R %f in (.\*) do %f

4. 迭代当前目录及其所有子目录中的子目录:

for /R /D %s in (.\*) do %s

然而,不能同时迭代文件和子目录。如果希望实现这一功能,可以使用cygwin中的bash脚本。

此外,还可以通过查看MS Windows的内置帮助来了解cmd命令行语法的描述。还可以参考以下链接获取更多信息:http://technet.microsoft.com/en-us/library/bb490890.aspx

需要注意的是,`%file`和`%subdir`只能是一个字符,例如`%f`和`%s`。

在某些情况下,可能会遇到一些问题。例如,"subdirs in current dir"的方法可能无法正常工作,会出现错误提示"s was unexpected at this time"。另外,使用`for /R /D %s in (.\*) do %s`方法可能会在所有路径前添加一个额外的"\."。虽然可以使用`(*)`来处理子目录,但无法找到一种同时在子目录和当前目录中执行FOR...DO操作的方法。

0
0 Comments

遍历一个目录中的所有文件使用一个“for”循环的问题是因为需要对一个目录中的所有文件进行操作,但是不知道如何遍历所有文件。解决方法是使用“for /r”命令来遍历目录中的所有文件。

在当前目录及其子目录中列出所有文件(只列出文件)的命令是:

for /r %i in (*) do echo %i

如果在批处理文件中运行该命令,需要将%符号加倍。

for /r %%i in (*) do echo %%i

这可能取决于你使用的操作系统,即XP/Vista/2000可能支持不同的命令行参数。

如果你不想递归使用该命令,请确保去掉/r。

如果你只想在当前目录(递归)中回显文件名(不包括完整路径)和扩展名,可以像这样进行:for /r %i in (*) do (echo %~nxi)。这个线程也可能非常有用:stackoverflow.com/questions/112055/…

如果你想做多于一件事怎么办?你可以列出多个要执行的命令吗?

是的,在Do之后,使用括号。例如,do (echo %i&del %i)。你也可以使用“enter”而不是“&”来执行多个命令。

如果你使用的是copy/move等命令,而不是echo,请确保正确引用路径。for /r %%i in (*) do echo "%%i"

嗨,感谢你的建议。在这里,for循环是否需要一个“end”关键字?

显然,需要使用单个字母的变量名。

0