у меня есть папка folder1
содержать 3 файла file1
, file2
и file3
... мне нужна командная строка для выполнения следующей задачи ... сохранить имя файла в переменной ... потому что я хочу написать динамический пакет
FOR %%f in (folder1\*) DO @echo %%f
в пакетном файле будет отображено имя каждого файла в папке. Чтобы сделать то же самое в командной строке, используйте только один знак процента для переменной. Вы можете заменить echo
с какой-то другой командой.
Если вы процитируете %%f
, то echo
будет выводить кавычки вокруг имени файла, но если вы хотите передать имя файла другим командам, кавычки могут потребоваться, если в именах файлов есть специальные символы, такие как пробелы. Например, чтобы вывести содержимое всех файлов:
FOR %%f in (folder1\*) DO @type "%%f"
Без кавычек, если был файл с именем "Has Space", type
попытается вывести содержимое двух файлов: «Имеет» и «Пробел». С кавычками все будет работать по назначению.
Предполагая, что это пакетный файл, вы можете сделать это в цикле for следующим образом:
setlocal EnableDelayedExpansion
for %%a in (folder1\*) do (
set fileVariable=%%a
echo !fileVariable!
)
Если вы хотите перейти с пакетной версии на PowerShell:
Foreach ($file in Get-Childitem "<PATH>") {
$file.name
}