私はフォルダを持っていますfolder1
3つのファイルが含まれていますfile1
、file2
およびfile3
...次のタスクを実行するにはコマンドラインが必要です...ファイルの名前を変数に保存します...動的バッチを作成したいので
FOR %%f in (folder1\*) DO @echo %%f
バッチファイルでは、フォルダ内の各ファイルのファイル名がエコーされます。コマンドラインで同じことを行うには、変数に1パーセント記号のみを使用します。 echo
を他のコマンドに置き換えることができます。
%%f
を引用符で囲むと、echo
はファイル名の前後に引用符を出力しますが、ファイル名を他のコマンドに渡したい場合、スペースなどの特殊文字がある場合は引用符が必要になることがあります、ファイル名で。たとえば、すべてのファイルの内容を出力するには、次のようにします。
FOR %%f in (folder1\*) DO @type "%%f"
引用符がないと、「Has Space」という名前のファイルがあった場合、type
は「Has」と「Space」の2つのファイルの内容を出力しようとします。引用符を使用すると、意図したとおりに機能します。
バッチからPowerShellにアップグレードする場合:
Foreach ($file in Get-Childitem "<PATH>") {
$file.name
}
これがバッチファイルにあると仮定すると、次のようなforループで実行できます。
setlocal EnableDelayedExpansion
for %%a in (folder1\*) do (
set fileVariable=%%a
echo !fileVariable!
)