广告来源于谷歌。


cao,不小心把自己名字暴露出来了

昨天晚上,686108376群里的群主(iOS挖坑大佬)发了一个压缩包,包含着收集的wf表情包

不幸的是,静态表情包被程序自动分隔成了一个个文件夹。实际上,文件夹里除了一个json(可能是配置文件?)和一张我们要的图片以外,没有别的。

人工一遍遍来抽取是绝对不可能的了。图片总共有270多张,所以一个个来抽取是效率极低的事情。我开始想着想写一个bat之类的脚本自动将图片提取出文件夹。

一开始,我用的是Windows——毕竟Windows的用户量还是相当高的——而且我自己也在用——所以——为了便利咯。

我第一个开始找的是“如何设置、自增变量”,很快就找到了代码:

set /a a=20    设置变量a
set /a a+=1    将变量a自加1

然后我又找了“cmd for循环”,也很快找到了代码:

for /l %%i in (1,1,5) do (
/*Code here*/
)

接着,我在循环里加了这几行代码:

cd "wf_emoji%a%.imageset"
copy wf_emoji%a%.jpg "../wf_emoji%a%.jpg"
copy wf_emoji%a%.png "../wf_emoji%a%.png"
cd ..
set /a a+=1

然而,当我执行时,却发现没有复制,窗口里充斥着错误信息:

我于是就想着,把这些代码手动放到cmd去运行,会怎么样呢?于是,我把这几行代码放进cmd:

set /a a=25
cd "wf_emoji%a%.imageset"
copy wf_emoji%a%.jpg "../wf_emoji%a%.jpg"
copy wf_emoji%a%.png "../wf_emoji%a%.png"
cd ..
set /a a+=1

结果是,完全奏效!MS你是脑抽了还是怎么回事

于是,我便又尝试了几次,结果是——没用!

我反复查了几遍,总结了几点:

这四条中,最后一条是我反复试验了很久才查出来的。

很明显,cmd对点号什么的有误解——超级大——它将点号误认为了什么符号。

我不得不停止。

这时,我不由得想到了bash。bash是Linux下的命令行,类似于powershell,但是powershell终究还是Windows味。

我查了一下bash的for循环,发现它是一种类c语言的命令(其实更像是python中的for循环)。for循环在bash中长这样:

for i in {25..267}
do
/*Code here*/
done

而引用变量是这样的:

$i   /*引用变量i(for循环)*/

因为for循环跟python差不多,i在循环后会自动自增1,于是,接下来粘贴Linux的代码就可以了:

cd "wf_emoji$i.imageset"
mv "wf_emoji$i.jpg" "../wf_emoji$i.jpg"
mv "wf_emoji$i.png" "../wf_emoji$i.png"
cd ..

bash的代码总结如下:

/*有空行版本*/
for i in {25..267}
do
cd "wf_emoji$i.imageset"
mv "wf_emoji$i.jpg" "../wf_emoji$i.jpg"
mv "wf_emoji$i.png" "../wf_emoji$i.png"
cd ..
done

/*一行命令版本*/
for i in {25..267}; do cd "wf_emoji$i.imageset"; mv "wf_emoji$i.png" "../wf_emoji$i.png"; mv "wf_emoji$i.jpg" "../wf_emoji$i.jpg"; cd ..; done

好了!接下来,打开git bash,cd到文件夹,复制,粘贴,回车!接下来,你应该会看到一些jpg和png文件无法复制——但是,他们的编号是不同的,每一次,不是jpg就是png,并且没有同一编号的jpg和png无法复制!这表明,mv命令正在移动并重命名文件到你需要的地方。

由于有242个图片需要迁移,因此建议不要将资源管理器切换至文件夹,否则很容易卡死。


为什么我的名字又一次光明天下了。。。cao

原因是,我的Windows账户绑定了ms账户,因此账户名被恰好换成了ms账户中的姓和名。然后是传命令的时候忘记打码了。

总之吧,算是一次教训。希望大佬们不要人肉我就行了。

Warframe真好玩!加个歹友?用户名:sctop。


以下这些段落不是在文章里的内容。