吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1596|回复: 25
收起左侧

[求助] 关于C语言从utf8文件里获取字符串,无法应用的问题,求大佬指点,谢谢!

[复制链接]
xtvott 发表于 2021-8-4 22:02
本帖最后由 xtvott 于 2021-8-5 11:36 编辑

事情是这样的,本人从某二次元网站下了周杰伦的高清MV,很高兴的拷到了电脑里面来,利用ffmpeg将视频与音频合并后,准备重命名。
可是一翻目录,一百多个文件,妈耶,瞬间就想到了编程去解决问题(合并文件用批处理愉快的解决了)。先用批处理,文件内容也读出来了,指定的title也读出来了,可卡在了ren命令上,如图
Snipaste_2021-08-04_21-57-48.jpg
事实上,后续手动打命令是可以更名的,也可以包含空格,但就是不能使用从文件里读出的字符串
没办法,准备使用万能的C(因个人癖好,使用vc6.0,文件后缀为.c)
前面获取路径,字符串拼接等一切顺利,可又卡在了从entry.json文件内读出的文件名上。不使用chcp 65001吧,一团乱码
使用chcp65001吧,又会把我路径中的中文给吞掉。在使用printf的时候简直认为出了灵异事件。
左右尝试了很多,资料也查了很多,耐何对字符编码集没有研究,看各位大佬能给点简单好用的方法,或者成品function来用一下么,感激不尽


为了避免说不会用ren命令,附图一张- -!
Snipaste_2021-08-04_21-57-48.jpg
上面powershell的命令显示了用手动更名的效果。中间的cmd是批处理开启回显的全过程,下面是精简版。。。。可以看到,手动是没任何问题的,但一使用批处理变量就会出问题。不在于有没有用双引号。。再附上批处理源码,有兴趣的同学可以在B站自己缓存个视频到手机里,拷到电脑里尝试一下:
[Asm] 纯文本查看 复制代码
@echo off
setlocal enabledelayedexpansion
chcp 65001
For /F "Delims=}}" %%i In (entry.json) Do (
     
   set str=%%i
)

set tt=%str:"= %
set tt="!tt:~-21,-1!.mp4"
echo %tt%
ren ./output.mp4 %tt%
pause

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
461735945 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
Sashka 发表于 2021-8-4 22:16
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| xtvott 发表于 2021-8-4 22:30
Sashka 发表于 2021-8-4 22:16
如果只是做重命名,推荐使用python大法

主要是python打包成exe不会
yxn4065 发表于 2021-8-4 22:38
xtvott 发表于 2021-8-4 22:30
主要是python打包成exe不会

pip install pyinstaller
然后打包方法网上一搜一大堆
 楼主| xtvott 发表于 2021-8-4 22:46
yxn4065 发表于 2021-8-4 22:38
pip install pyinstaller
然后打包方法网上一搜一大堆

那还是等于重新学一回python。。。问题是现在核心问题卡在这儿了,要是python也卡在这,那不就白折腾一翻了嘛。。
侃遍天下无二人 发表于 2021-8-5 00:19
用Java或者go呀,Python也不错,c语言啥都要你自己考虑好才行
wangyujie96 发表于 2021-8-5 02:14
rename 第二参数不能带路径,纯文件名;
命令行ffmpeg不是可以指定输出文件名吗?
DavisC 发表于 2021-8-5 06:48
rename后的新旧文件夹路径,全部用半角双引号框起来
例如

rename "H:\xxxx\xxxx\output.mp4" "H:\xxxx\xxxx\文件名.mp4"

点评

rename 第二参数不能带路径,纯文件名。带路径用move  发表于 2021-8-5 14:57
 楼主| xtvott 发表于 2021-8-5 09:00
wangyujie96 发表于 2021-8-5 02:14
rename 第二参数不能带路径,纯文件名;
命令行ffmpeg不是可以指定输出文件名吗?

ffmpeg是合并视频,但合并之后要要从json文件中提取文件名进行更改,否则只能一首首听才知道名字。。。我太难了
c03xp 发表于 2021-8-5 09:11
这个要看你是否定义了_UNICODE,如果定义了,在使用重命名API(MoveFile或rename)时要用unicode版本的。如果没有定义,要用WideCharToMultiByte把读取的字符串转换成ansi字符串
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表