web-dev-qa-db-ja.com

Windowsでフォルダとファイル名を取得して変数に保存するにはどうすればよいですか?

私はフォルダを持っていますfolder13つのファイルが含まれていますfile1file2および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
}
0
MattB

これがバッチファイルにあると仮定すると、次のようなforループで実行できます。

setlocal EnableDelayedExpansion 

for %%a in (folder1\*) do (
set fileVariable=%%a
echo !fileVariable!
)
0
simon