正如我在Q-title中提到的,当我通过正确的访问令牌时,我已经设置了一个崇高的设置自动同步过程到我选择的Github。
现在,考虑到相对路径,该过程将文件夹中存在的任何文件同步为DirName%2FFileName.extension,其中DirName和/或FileName可能包含单词之间的单数空格(%20)(如果两者中的单词超过2字)。
现在,当我通过‘DownloadZIP按钮下载gist时,它当然会以单个zip的形式下载多个文件的整个gist,下载后可以将其解压缩到本地系统(Windows10/11 OS)的文件夹中。
所以,最后的问题是:当我下载了这样的zip并解压缩到包含一个/多个文件的文件夹中,其中包含有%2f或%2F的文件名,我如何从这些文件名创建一个目录,并在可能的情况下通过一个批处理文件或一个PowerShell命令将这些文件移动到那些目录中,但是可以从批处理脚本中运行,然后重新命名这些文件以从它们的名称中删除所有的DirName%2f部件?我知道mv和md命令,但是如何从URL编码的字符组创建目录并执行这些操作?
注意:如果与本地同步的文件相对在mainfolder/subfolders...中,则 DirName%2f部件可能发生在像DirName1%2fDirName2%2f...这样的倍数中。
发布于 2022-07-25 12:34:40
你可以试试:
[System.Web.HttpUtility]::UrlDecode("DirName%2FFileName.extension")它规定:
DirName/FileName.extension然后,您可以使用CmdLets和名词"Path“来管理您的文件名。
Get-Command -Noun path如果它存在一些/而不是\,Powershel应该对它们进行管理。
要处理文件和文件夹,给出了带有名词项的CmdLet:
Get-Command -Noun item例如,要创建一个目录:
New-Item -name toto -ItemType Directory发布于 2022-07-25 12:44:30
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "#name1=DirName%%2f"
SET "#name2=DirName1%%2fDirName2%%2f"
SET "#name3=DirName1%%2FDirName2%%2F"
SET "#2f=%%2f"
SET "#subs=ABC"
SET #
FOR /f "delims=" %%e IN ("%#2f%") DO (
FOR /f "delims=" %%w IN ("!#name1:%#2f%=%#subs%!") DO ECHO REN "%#name1%" "%%w"
FOR /f "delims=" %%w IN ("!#name2:%#2f%=%#subs%!") DO ECHO REN "%#name2%" "%%w"
FOR /f "delims=" %%w IN ("!#name3:%#2f%=%#subs%!") DO ECHO REN "%#name3%" "%%w"
)
ECHO ===================
FOR %%b IN ("%#name1%" "%#name2%" "%#name3%") DO (
SET "#name=%%~b"
FOR /f "delims=" %%e IN ("%#2f%") DO (
FOR /f "delims=" %%w IN ("!#name:%#2f%=%#subs%!") DO ECHO REN %%b "%%w"
)
)
GOTO :EOF这个演示展示了如何在批处理中。
https://stackoverflow.com/questions/73109089
复制相似问题