我有一个目录结构如下:
Folder
> SubFolder1
> FileName1.abc
> Filename2.abc
> .............
> SubFolder2
> FileName11.abc
> Filename12.abc
> ..............
> ..........
Run Code Online (Sandbox Code Playgroud)
等我想将子文件夹中的文件重命名为:
SubFolder1_Filename1.abc
SubFolder1_Filename2.abc
SubFolder2_Filename11.abc
SubFolder2_Filename12.abc
Run Code Online (Sandbox Code Playgroud)
即在文件名的开头添加文件夹名称,并使用分隔符“ _”。目录结构应保持不变。注意:文件名的开头相同。例如在上述情况下 File*.
我做了下面的脚本
for /r "PATH" %%G in (.) do (
pushd %%G
for %%* in (.) do set MyDir=%%~n*
FOR %%v IN (File*.*) DO REN %%v "%MyDir%_%%v"
popd
)
Run Code Online (Sandbox Code Playgroud)
上述脚本的问题在于它只采用一个子文件夹名称并将其放置在文件名的开头,而与文件夹无关。
我有数千个没有特定扩展名的文件。我需要做的是在文件名中搜索字符串并替换为其他字符串,然后进一步搜索第二个字符串并替换为任何其他字符串,依此类推。即:我有多个字符串可以替换为其他多个字符串。它可能是这样的:
我目前正在使用 Excel 宏获取 Excel 中的文件名,然后在一列中保留原始名称,并替换另一列中复制的内容中所需的名称。然后我为其创建一个批处理文件。喜欢:
rename Path\OriginalName1 NewName1
rename Path\OriginalName2 NewName2
Run Code Online (Sandbox Code Playgroud)
上述过程的问题在于,由于文件较多,因此需要花费大量时间。由于我使用的是 Excel 2003,行数也有限制。我需要一个批量脚本,例如:
replacestr abc with def
replacestr pqr with xyz
Run Code Online (Sandbox Code Playgroud)
在单个目录中。在unix脚本中做会更好吗?