如何防止批处理文件重命名自己

10 浏览
0 Comments

如何防止批处理文件重命名自己

我有一个批处理文件,它应该重命名目录中的每个文件,但它总是重命名自己,然后在脚本之后不能继续执行。

for /r %%b in (*) do (
    ren %%b !random!
)

这个问题可能是这个问题的克隆,但即使在阅读这个这个后,我仍然搞不懂。

要么我太笨了,答案非常简单,要么是因为我太累了,思维不清晰。

0
0 Comments

如何防止批处理文件自我重命名

在某些情况下,你可能想要防止批处理文件自我重命名。下面是一个解决该问题的解决方案:

For /R %%A In (*) Do If /I Not "%%A"=="%~f0" Ren "%%A" %RANDOM%

这个解决方案使用了一个循环语句来遍历当前目录及其子目录中的所有文件。在每次循环中,它会检查当前文件路径是否与批处理文件的路径相同。如果不相同,它将使用%RANDOM%函数来对该文件进行重新命名。

这个解决方案的原因可能是为了防止批处理文件被其他程序或用户无意中重命名。通过在循环中检查文件路径,可以确保只有批处理文件之外的文件才会被重命名。

请注意,这个解决方案可能会导致一些文件被重命名为相同的名称,因为%RANDOM%函数生成的随机数可能重复。如果你希望避免这种情况,你可以使用更复杂的算法来生成唯一的文件名。

希望这个解决方案能够帮助你防止批处理文件自我重命名。记得在使用之前备份你的文件,以防不测。

0
0 Comments

问题原因:批处理文件重命名自身的问题可能是由于使用了`%0`而没有获取到完整的目录、文件名和文件扩展名导致的。

解决方法:将`%0`替换为`%~f0`可以获取到完整的目录、文件名和文件扩展名。也可以使用`%~dpnx0`来获取完整的路径。

以下是完整的

当我们编写批处理文件时,有时候可能需要防止批处理文件重命名自身。这个问题的原因可能是由于使用了`%0`而没有获取到完整的目录、文件名和文件扩展名。

一个解决方法是将`%0`替换为`%~f0`。这样就可以获取到完整的目录、文件名和文件扩展名。另外,也可以使用`%~dpnx0`来获取完整的路径。

感谢Compo在Stack Overflow上的回答,他提到了使用`%~f0`来获取完整路径的方法。这个方法对于防止批处理文件重命名自身非常有用。

希望这篇文章对大家能够有所帮助!

0