用零替换文件名中的空格

用零替换文件名中的空格

不是程序员,但了解逻辑,就像了解一种语言但不会说出来一样。环境是 Windows Server 2016。

尝试编写一个 .bat 文件,将目录中文件名中的空格替换为零“0”。在网上找到一个脚本并进行了修改。但当我运行它时,出现以下错误。不明白为什么。任何帮助都将不胜感激。谢谢。

错误 - “75553.txt 此时是意外的。”

    @echo off
    myfile="\\Dev\Out\File\Outfile-name-20200902 75553.txt"
    for /f %myfile% do (mv "$f" "${f// /0}") done
    echo %myfile%
    pause

答案1

我会通过多个步骤来完成:

  1. 将目录中现有的文件名保存到文件中。
  2. 对于每个文件名,临时存储文件名的副本,并将所有空格替换为“0”字符。
  3. 如果临时存储的文件名与列表中的当前文件名不同,则将当前文件名重命名/移动到新文件名。

答案2

如果你真的有bash(根据你的标签),整个过程可以非常直接地处理。这是一个可以与 Cygwin 配合使用的脚本

#!/bin/bash
#
shopt -s nullglob

for src in //dev/inbound/outfile*.txt
do
    file="${src##*/}"                    # Get filename without path
    dst="//dev/outbound/${file// /0}"    # Generate target path, with zeroes for spaces
    mv -f "$src" "$dst"                  # Move and rename the file
done

相关内容