通过将文件放在批处理或 python 上来获取文件的路径

Posted

技术标签:

【中文标题】通过将文件放在批处理或 python 上来获取文件的路径【英文标题】:Take the path of a file by dropping it on batch or python 【发布时间】:2021-12-01 21:52:05 【问题描述】:

在我的脑海中,这个问题似乎很简单,但我终其一生都无法弄清楚。 我想使用类似于 os.replace() 的函数将文件/文件夹从一个位置移动,该位置可能会更改为设置的位置,同时还保留它的名称。

此时我无法弄清楚,但是为了让它稍微困难一点,我希望能够将文件拖放到批处理/python 脚本上,并让代码检测我拖放到其上的文件的文件路径。

对不起,简短的解释不好:

import os
initialfilepath = "The filepath of the file i drop onto the batch/python file"
finalfilepath = "Predetermined/file/path etc"
os.replace(initialfilepath,finalfilepath) <--However i want to preserve the name of the file.

任何帮助将不胜感激!

【问题讨论】:

保留你的意思是保持相同的basename 并更改父目录吗? “检测文件路径”是指确定文件的absolute path 吗? 您的问题提到了批处理文件或python文件。该站点可帮助您使用提交的代码和信息解决单个特定且可重现的问题。您尚未提交任何批处理文件或其内容,或解释它如何无法按预期工作。请重新审视您的问题和分配的标签,并使用edit 按钮进行必要的改进。 批处理文件:%1 Python:sys.argv[1] @joshmeranda 我确实是指保持相同的基本名称并更改它的存储位置,也通过检测文件路径我的意思是,当移动文件而不是指定原始文件路径时,我可以存储原始文件将任何文件放在脚本中的变量中并将其用作移动过程中的术语,无论可能是什么,我都不是最擅长编码的,因此为松散的答案道歉:) 【参考方案1】:

通过批处理文件中的一行,您可以处理所有已删除的文件:

CMD /k FOR %%s in (%*) do ECHO %%s

在此示例中,它将打印所有已删除的文件。 参数%*获取所有文件路径名。 命令FOR如图所示,将字符串用空格分割,并一一处理。 如果文件路径名有空格,那么它将作为一件事放在引号中。

请注意,您不需要CMD /k,但它会在最后保持控制台打开。 如果您只想在关闭之前看到,请在末尾插入PAUSE &gt; nul

您可以将 do 命令组合在 ( ... ) 之间,然后换行。 考虑在开始时设置@ECHO off

现在自己试试吧:) 键入FOR /? 以查看更多操作参数的可能性%~nX%~dpX%~xX...

【讨论】:

以上是关于通过将文件放在批处理或 python 上来获取文件的路径的主要内容,如果未能解决你的问题,请参考以下文章

python 文件处理

通过批处理文件运行 abaqus python 脚本?

python处理fasta文件,ID和序列放在一行

bat获取python文件的返回值?

如何将python命令全部放在bat中执行?

Python基础文件操作和处理json