我有一个文件夹,其中folder1
包含 3 个文件file1
、file2
和file3
等。
我需要命令行来执行以下任务。
将文件的名称存储在变量中,因为我想编写动态批处理。
答案1
FOR %%f in (folder1\*) DO @echo %%f
在批处理文件中将回显文件夹中每个文件的文件名。要在命令行中执行相同操作,请仅对变量使用一个百分号。您可以echo
用其他命令替换。
如果您引用%%f
,echo
将输出文件名周围的引号,但如果您想将文件名传递给其他命令,则如果文件名中有特殊字符(例如空格),则可能需要使用引号。例如,要输出所有文件的内容:
FOR %%f in (folder1\*) DO @type "%%f"
如果不带引号,如果有一个名为“Has Space”的文件,type
则会尝试输出两个文件的内容,“Has”和“Space”。如果带引号,它将按预期工作。
答案2
假设这是在批处理文件中,您可以在 for 循环中执行如下操作:
setlocal EnableDelayedExpansion
for %%a in (folder1\*) do (
set fileVariable=%%a
echo !fileVariable!
)
答案3
如果要从批处理升级到 powershell:
Foreach ($file in Get-Childitem "<PATH>") {
$file.name
}
$filenames = (Get-ChildItem -Path "PATH" -Directory).Name