我正在尝试将一个拼凑起来的 Linux 脚本转换为 Windows 命令行。所以,下面是我的脚本,虽然不优雅,但不知何故它可以工作。
rar a -r0 boomer.rar
#combines all the files into a rar file
mkdir 'rar - '"${PWD##*/}"
#makes a new sub-dir named the same as parent with "rar - " prepended
cp boomer.rar 'rar - '"${PWD##*/}"
#copies boomer.rar to the new folder (see below*)
rm boomer.rar
#removes rar file *becuse I couldn't just get it to move in linux
cd 'rar - '"${PWD##*/}"
# move focus to new dir
for fname in *.rar
do
mv $fname 'boomer - '"$(pwgen 26 1).rar"
done
#renames files
编辑:
[添加此部分以解释我想要完成的任务。此脚本的目的是将文件夹中的所有文件压缩成 rar。例如 c:\boomer\egret 这会创建 boomer.rar 创建一个名为“rar - egret”的新文件夹 C:\boomer\egret\rar - egret boomer.rar 被复制到“rar - egret”并删除 将目录更改为“rar - egret” 将 boomer.rar 重命名为“boomer - ahs7Ahxei2imah4tubiqu1eY2i.rar” 然后整个“rar- egret”文件夹稍后将被移动到存储位置。]
我不知道该怎么做“${PWD##*/}”。我需要这方面的帮助,只获取目录名称,而不是路径。
我根本不是程序员。这些都是从论坛上研究步骤拼凑起来的。我一无所知,也不理解我使用的代码。对不起,但有时猴子会按到正确的键。
我的朋友圈成员要求我在 Windows 上实现这个功能。我在这里使用最低标准,所以是批处理文件。没有安装 WSL,只有原始 Windows。
如果太难,我也可以接受。如果需要更多信息,我会提供尽可能多的信息,但我不知道,除非有人告诉我。
答案1
我们不应该为您编写代码。
下面是关于如何编写的提示,希望您能够遵循。
第一个命令(mkdir)只能用一个小程序来完成,所以我把它包括在这里,其余的将是关于如何自己编写的建议,我希望这有意义。
好的,据我所知,没有变量分配直接父文件夹的名称,但这仍然可以完成。您的第一行必须替换为以下内容:
call :Makedir
然后将此例程添加到脚本的底部:
:MakeDir
set _dir=%~p0
SET _dir2=%_dir:\= %
call :FindParent %_dir2:~1,-1%
mkdir "rar - %Parent%"
goto :eof
:FindParent
if "%1"=="" goto :eof
set Parent=%1 & shift & goto :FindParent
...这将为您创建目录。其余部分您必须自己编写,但以下是方法:
下一行将cp
被替换,copy
并且可能会添加一个“/y”,因此请尝试copy /y
替换“cp”。从命令行尝试copy /?
获取详细信息。
下一行将rm
被替换为del /y
,并且可能会添加“/f”,因此请尝试del /y /f
替换rm
。从命令行尝试del /?
获取详细信息。
您仍然需要将文件移动到目标位置,'mv' 的等效项很简单move
(有关详细信息),并使用 %rnd% 来生成随机字符。CMD中move /?
没有等效项。pwgen
我希望这些足以让你弄清楚一切。这是可以做到的,但我不能为你写出一切。