不是程序员,但了解逻辑,就像了解一种语言但不会说出来一样。环境是 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
我会通过多个步骤来完成:
- 将目录中现有的文件名保存到文件中。
- 对于每个文件名,临时存储文件名的副本,并将所有空格替换为“0”字符。
- 如果临时存储的文件名与列表中的当前文件名不同,则将当前文件名重命名/移动到新文件名。
答案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