Batch file 删除Windows文件名中的前导空格

Batch file 删除Windows文件名中的前导空格,batch-file,Batch File,我有一个Windows文件夹,其中包含许多子文件夹和文件。我注意到有数百个文件的名称以空格开头,因此不会复制到云存储库(OneDrive)。我是否可以运行Windows命令或批处理文件来搜索文件夹及其子文件夹中以空格开头的任何文件名,并删除该空格?您可以在PowerShell中运行以下命令,更新path变量以指向您的文件夹 $path = # Path to folder $files = Get-ChildItem -Path $path -Recurse Foreach($file in

我有一个Windows文件夹,其中包含许多子文件夹和文件。我注意到有数百个文件的名称以空格开头,因此不会复制到云存储库(OneDrive)。我是否可以运行Windows命令或批处理文件来搜索文件夹及其子文件夹中以空格开头的任何文件名,并删除该空格?

您可以在PowerShell中运行以下命令,更新path变量以指向您的文件夹

$path = # Path to folder
$files = Get-ChildItem -Path $path -Recurse 
Foreach($file in $files)
{
    Rename-Item -Path $file.FullName -NewName ($file.Name).Trim()
}

您可以在PowerShell中运行以下命令,更新path变量以指向您的文件夹

$path = # Path to folder
$files = Get-ChildItem -Path $path -Recurse 
Foreach($file in $files)
{
    Rename-Item -Path $file.FullName -NewName ($file.Name).Trim()
}

执行此操作的批处理文件方式如下所示:

@echo关闭
对于(“*”)中的/R%%A,请执行以下操作(
对于(“%%~nxA”)中的/F“tokens=*”%%B,请执行以下操作(
ren“%%A”“%%B”
)
)
  • 我们使用
    /R
    选项遍历所有子文件夹
  • 我们希望找到所有以空格开头的文件,因此在括号中指定它(
    (“*”)
    )。
    • 对于找到的每个文件,我们通过指定
      tokens=*
      循环其名称,这意味着删除前面的所有空格
    • 因此,在那之后我们得到:
      %%A
      =
      文件的完整路径,开头有空格
      %%B
      =
      仅显示不带空格的文件名
      • 因此,我们使用
        ren
        命令重命名它们
    • (右括号)
  • (右括号)

这也可以在一行中从命令行运行:

for/R%A IN(“*”)do@for/F“令牌=*%B IN(“%~nxA”)do@ren“%A”%B

执行此操作的批处理文件方法如下所示:

@echo关闭
对于(“*”)中的/R%%A,请执行以下操作(
对于(“%%~nxA”)中的/F“tokens=*”%%B,请执行以下操作(
ren“%%A”“%%B”
)
)
  • 我们使用
    /R
    选项遍历所有子文件夹
  • 我们希望找到所有以空格开头的文件,因此在括号中指定它(
    (“*”)
    )。
    • 对于找到的每个文件,我们通过指定
      tokens=*
      循环其名称,这意味着删除前面的所有空格
    • 因此,在那之后我们得到:
      %%A
      =
      文件的完整路径,开头有空格
      %%B
      =
      仅显示不带空格的文件名
      • 因此,我们使用
        ren
        命令重命名它们
    • (右括号)
  • (右括号)

这也可以在一行中从命令行运行:

for/R%A IN(“*”)do@for/F“令牌=*%B IN(“%~nxA”)do@ren“%A”%B

super user上可能会出现一个不可怕的问题+1的副本。我发现这是一个非常有用的问题,+1,应该在超级用户上。我发现这很有用批处理文件代码中有一个输入错误。它应该是“%%~nxA”而不是“%%~nxA”。批处理文件代码中有输入错误。它应该是“%%~nxA”而不是“%%~nxA”