无忧启动论坛

标题: (已解决)图片如何批量转换成unicode,请大神们支招(感谢slore和黑中见白两位大神 [打印本页]

作者: 翅膀    时间: 2020-4-2 07:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: 2012abc.    时间: 2020-4-2 09:30
不懂,帮顶一下
作者: slore    时间: 2020-4-2 09:32
本帖最后由 slore 于 2020-4-2 11:46 编辑

python,ruby代码估计3~5行就好了,都自带了字符串编码库。
  1. Dir.glob("D:\文字图片\*.bmp").files.each |file| do
  2.       file.name = file.name[1 .. -4].encode("unicode").hex() + ".bmp"
  3. end
复制代码





作者: 翅膀    时间: 2020-4-2 10:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: 翅膀    时间: 2020-4-2 10:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: martn    时间: 2020-4-2 10:10
看看先,现成软件?
作者: slore    时间: 2020-4-2 10:10
本帖最后由 slore 于 2020-4-2 10:11 编辑
翅膀 发表于 2020-4-2 10:03
python脚本我不会,那种自动转码的方法我会操作,就是转码后,把图片的名称也直接批量修改,这个不会,您 ...

用自己知道的方法进行组合:

dir /b *.bmp 生成名字一览

你会转码就print输出下面的字符串:
ren  一.bmp u4e00.bmp

重定向到一个  改名.bat

然后双击不就好了?要自动,你的代码再 cmd.exe /c 改名.bat 调用下。
作者: EmEditor9    时间: 2020-4-2 11:00
哇,居然有这样的操作
作者: 翅膀    时间: 2020-4-2 11:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: 翅膀    时间: 2020-4-2 11:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: 翅膀    时间: 2020-4-2 11:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: slore    时间: 2020-4-2 12:01
本帖最后由 slore 于 2020-4-2 12:09 编辑
翅膀 发表于 2020-4-2 11:46
再次请教,我中文转unicode用的是java里的native2ascii,python确实不会,能否再解答一下,非常感谢!

name.py
  1. import os
  2. for file in os.listdir("test"):
  3.     print("ren " + file + " u" + hex(ord(file[:-4]))[2:] + ".bmp")
复制代码





作者: tyuka111    时间: 2020-4-2 12:39
学习一下
作者: 翅膀    时间: 2020-4-2 14:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: slore    时间: 2020-4-2 14:10
翅膀 发表于 2020-4-2 14:07
感谢解答,虽然我对python不懂,但是望文生义,您给的这两段代码,一个是提取目录下图片文件名并转换成un ...

这是2段代码,第一段是ruby的伪代码。

第二段的python的,2个是独立的代码。

获取文件夹下的文件列表,each每一个文件,
去掉后4位的名字过去unicode码,hex转16进制,去掉开头2位0x,用u字母拼接,再拼接.bmp。
作者: slore    时间: 2020-4-2 14:16
本帖最后由 slore 于 2020-4-2 17:03 编辑
翅膀 发表于 2020-4-2 14:07
感谢解答,虽然我对python不懂,但是望文生义,您给的这两段代码,一个是提取目录下图片文件名并转换成un ...

把print改成os.system直接执行改名命令。

import os
for file in os.listdir("test"):
    os.system("ren test\\" + file + " u" + hex(ord(file[:-4]))[2:] + ".bmp")



这3行代码是:
直接修改test目录下bmp图片名字的完整代码。
(如有担心,使用前请备份test目录)
作者: 黑中见白    时间: 2020-4-2 14:22
PowerShell
应该可以
作者: 翅膀    时间: 2020-4-2 14:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: 翅膀    时间: 2020-4-2 14:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: 翅膀    时间: 2020-4-2 15:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: slore    时间: 2020-4-2 16:43
翅膀 发表于 2020-4-2 15:30
请问,我这么操作是否正确?我把要改名的图片都放在了test目录下,但是在python下运行这三行代码无反应 ...

保存成  name.py,打开后F5运行,或者双击就好了。你这个界面要按回车。
作者: 翅膀    时间: 2020-4-2 17:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: 翅膀    时间: 2020-4-2 17:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: slore    时间: 2020-4-2 18:00
本帖最后由 slore 于 2020-4-2 18:02 编辑
翅膀 发表于 2020-4-2 17:39
奇怪,刚刚又操作 了一遍,按f5后,开始报错了。

说了,论坛代码标签有bug,吞掉了一个 斜杠,你再对下我前面写的代码,ren test后面是2个斜杠。

字符串颜色就能看出来。
作者: chishingchan    时间: 2020-4-2 19:46
对于专业要求需要学会编程才好!
作者: 翅膀    时间: 2020-4-2 19:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: 翅膀    时间: 2020-4-2 19:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: slore    时间: 2020-4-2 21:37
本帖最后由 slore 于 2020-4-2 21:39 编辑
翅膀 发表于 2020-4-2 19:53
大神,我又重新复制了代码,还是出错,之前用的是3.7的版本,系统是win7,这次换了win10,软件版本换 ...




name.py.txt (120 Bytes, 下载次数: 5)


你是不是文件编码保存的有问题?也可以把你的文件上传,
这个是python的基本命令,和版本系统无关。


>不会编程,永远都是门外汉,遇到啥问题也解决不了,哎。

不用特别深的“编程”,文件操作,数据处理,字符串,Excel等日常,
会点儿脚本语言就方便很多。

作者: 黑中见白    时间: 2020-4-2 23:30
#PowerShell后缀名是ps1
#$file.fullname
#$file.name
#代码开始
$hzm="bmp" #后缀名
$files = Get-Childitem -Recurse -Include *.$hzm #遍历bmp
foreach ($file in $files)   #遍历文件
{
$str =  $file.name -replace("\.$hzm","") #获取bmp的名字
$ustr = ""
for($i = 0; $i -lt $str.Length; $i++){
    if([int]$str[$i] -gt 32 -and [int]$str[$i] -lt 127){
        $ustr += $str[$i]
    }
    else{
        $ustr += [System.String]::Format("\u{0:x4}", [int]$str[$i])
    }
}
$ustr= $ustr -replace("\\","") #删除unicode里的\符号
Rename-Item $file.pspath -NewName $ustr".$hzm" #替换文件名
$ustr
}
Start-Sleep -Milliseconds 6000 #等待6秒退出
#代码结束

作者: 黑中见白    时间: 2020-4-2 23:31
本帖最后由 黑中见白 于 2020-4-2 23:54 编辑

中文转unicode
是带\符号的,
这个符号,是不能在文件名出现的,
只能进行删除
目前来说,这个转换是单向的.1美女n.bmp
转成
1u7f8eu5973n.bmp
ps1不知道怎么用,
就用这个,保存为cmd格式
bmp格式文件名转换成unicode.cmd
@echo off
rem 开始
powershell -EncodedCommand IwBQAG8AdwBlAHIAUwBoAGUAbABsAA5UAH8NVC9mcABzADEACgAjACQAZgBpAGwAZQAuAGYAdQBsAGwAbgBhAG0AZQAKACMAJABmAGkAbABlAC4AbgBhAG0AZQAKACMA404BeABfy1kKACQAaAB6AG0APQAiAGIAbQBwACIAIAAjAA5UAH8NVAoAJABmAGkAbABlAHMAIAA9ACAARwBlAHQALQBDAGgAaQBsAGQAaQB0AGUAbQAgAC0AUgBlAGMAdQByAHMAZQAgAC0ASQBuAGMAbAB1AGQAZQAgACoALgAkAGgAegBtACAAIwBNkIZTYgBtAHAACgBmAG8AcgBlAGEAYwBoACAAKAAkAGYAaQBsAGUAIABpAG4AIAAkAGYAaQBsAGUAcwApACAAIAAgACMATZCGU4dl9k4KAHsACgAkAHMAdAByACAAPQAgACAAJABmAGkAbABlAC4AbgBhAG0AZQAgAC0AcgBlAHAAbABhAGMAZQAoACIAXAAuACQAaAB6AG0AIgAsACIAIgApACAAIwC3g9ZTYgBtAHAAhHYNVFdbCgAkAHUAcwB0AHIAIAA9ACAAIgAiAAoAZgBvAHIAKAAkAGkAIAA9ACAAMAA7ACAAJABpACAALQBsAHQAIAAkAHMAdAByAC4ATABlAG4AZwB0AGgAOwAgACQAaQArACsAKQB7AAoAIAAgACAAIABpAGYAKABbAGkAbgB0AF0AJABzAHQAcgBbACQAaQBdACAALQBnAHQAIAAzADIAIAAtAGEAbgBkACAAWwBpAG4AdABdACQAcwB0AHIAWwAkAGkAXQAgAC0AbAB0ACAAMQAyADcAKQB7AAoAIAAgACAAIAAgACAAIAAgACQAdQBzAHQAcgAgACsAPQAgACQAcwB0AHIAWwAkAGkAXQAKACAAIAAgACAAfQAKACAAIAAgACAAZQBsAHMAZQB7AAoAIAAgACAAIAAgACAAIAAgACQAdQBzAHQAcgAgACsAPQAgAFsAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwBdADoAOgBGAG8AcgBtAGEAdAAoACIAXAB1AHsAMAA6AHgANAB9ACIALAAgAFsAaQBuAHQAXQAkAHMAdAByAFsAJABpAF0AKQAKACAAIAAgACAAfQAKAH0ACgAkAHUAcwB0AHIAPQAgACQAdQBzAHQAcgAgAC0AcgBlAHAAbABhAGMAZQAoACIAXABcACIALAAiACIAKQAgACMAIFJklnUAbgBpAGMAbwBkAGUAzJGEdlwAJnv3UwoAUgBlAG4AYQBtAGUALQBJAHQAZQBtACAAJABmAGkAbABlAC4AcABzAHAAYQB0AGgAIAAtAE4AZQB3AE4AYQBtAGUAIAAkAHUAcwB0AHIAIgAuACQAaAB6AG0AIgAgACMA/2ZiY4dl9k4NVAoAJAB1AHMAdAByAAoAfQAKAFMAdABhAHIAdAAtAFMAbABlAGUAcAAgAC0ATQBpAGwAbABpAHMAZQBjAG8AbgBkAHMAIAA2ADAAMAAwACAAIwBJe4VfNgDSeQCQ+lEKACMA404BeNN+X2c=


作者: 翅膀    时间: 2020-4-3 07:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: 翅膀    时间: 2020-4-3 07:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: slore    时间: 2020-4-3 09:04
翅膀 发表于 2020-4-3 07:05
真是奇怪,我把您记事本里的命令原封不动的粘贴了进去,运行后还是报错,在命令行下操作也不行,请问, ...

直接改名我的文件, name.py.txt 为 name.py, 双击,或者用 python.exe name.py 调用即可。

只有3行是代码,你复制的是:
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import os
for file in os.listdir("test"):
    os.system("ren test\\" + file + " u" + hex(ord(file[:-4]))[2:] + ".bmp")


Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>


这些内容不需要啊。这个是交互工具输出的信息。
作者: 翅膀    时间: 2020-4-3 11:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: 翅膀    时间: 2020-4-3 11:58
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3