【问题标题】:Only conserve the name of the folder in a .txt file with a complete directory (Batch)仅在具有完整目录的 .txt 文件中保留文件夹名称(批处理)
【发布时间】:2015-05-03 19:04:15
【问题描述】:

(我还没有用这个东西做一批)

我有一个名为"worldcopy2.txt" 的文件,里面有一个完整的目录:

C:\Users\Robert\Desktop\myworld2

我想创建一个批处理文件来将.txt 的内部更改为只有当前目录的最后一个文件夹的名称。例如:

如果.txt 文件显示C:\Users\Robert\Desktop\funinside,则批处理必须将.txt 更改为仅在内部显示funinside

必须适用于所有目录。

用谷歌翻译翻译。

【问题讨论】:

标签: windows batch-file directory rename


【解决方案1】:

我试过这个:

@echo off
setlocal
REM read a full path from file
type worldcopy2.txt
for /f %%F in (worldcopy2.txt) do set x=%%F
REM extract last path component and write it back to file
for %%P in ("%x%") do echo %%~nP> worldcopy2.txt

type worldcopy2.txt

测试后丢弃type worldcopy2.txt 语句。这背后的想法是将路径视为完全限定的文件名,并让for 循环提取名称。请注意,如果文件夹名称包含点(“.”),这将失败。

【讨论】:

  • 我需要批量读取它在“worldcopy2.txt”中的完整目录,并在读取txt文档后,将文件“worldcopy2.txt”更改为只有文件夹的名称.示例:如果 .txt 文件显示 C:\Users\Robert\Desktop\funinside,则批处理必须将 .txt 更改为仅在“funinside”中显示。另外,感谢您的帮助;)
  • 这不是完全您在问题中所描述的吗?文本文件包含完整路径,批处理命令应将其更改为仅最后一个组件。请澄清一下——我认为谷歌翻译在这个过程中失去了你的一些意图。
  • 它工作,非常感谢,但如果目录是这样的:C:\Users\Robert\Documents\test 它会将 .txt 更改为“Documents”,而不是“test”: /
  • 是的,这是这段代码的唯一例外——我提到过。如果您想避免这种情况,代码将如下所示:将文件内容转换为字符串,将所有反斜杠替换为“;”并使用“delims=;”循环这个。您可以使用搜索功能在 SO 上找到这样的代码。
猜你喜欢
  • 1970-01-01
  • 2013-07-17
  • 2011-01-02
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
相关资源
最近更新 更多