『openframeworks』批量修改文件名

准备做一款练练看的小游戏练练手,找到一大堆的图片资源,不过名字都是比较乱,如果要使用的话得给图片重命名。

打开资源一看,OMG,3000多张,好吧,哥还是写个批量重命名的小程序,权当练级。

这里准备打算用of来写,写完才发现有很多地方做的不好,这个以后再说了,准备搞连连看了,反正这个已经帮我把重命名的问题搞定了。

『openframeworks』批量修改文件名_第1张图片

首先,在github上下个ofxFileDialog和ofxUI的addons下来,添加到of中。

我的下的地址是:

ofxFileDialog: https://github.com/robotconscience/robotconscience-of-addons

ofxUI: https://github.com/rezaali/ofxUI

ofxFileDialog有个问题就是不能选择文件夹,在网上也没找到合适的了,现在急着重命名,凑合用吧。

直接上代码,完全没啥技术含量。

#include "testApp.h"

//--------------------------------------------------------------
void testApp::setup(){
	ofBackground(100, 200, 100);
	bLock = false;

	gui = new ofxUICanvas(0, 0, ofGetWidth(), ofGetHeight());
	gui->setColorBack(ofxUIColor(100, 100, 100, 0));
	gui->addWidgetDown(new ofxUILabel(0, 200, 300, "TITLE", "FILES RENAME TOOL", OFX_UI_FONT_LARGE));

	gui->addSpacer(ofGetWidth(), 20);
	gui->addLabelButton("OPEN", false, 460.0f);
	gui->addLabelButton("TRANSLATE", false, 460.0f);
	gui->addSpacer(ofGetWidth(), 60);
	gui->addWidgetDown(new ofxUILabel(50, "File: ", OFX_UI_FONT_MEDIUM));
	gui->addTextArea("TEXT","click 'OPEN' button to selected the file", OFX_UI_FONT_SMALL);
	
	gui->addSpacer(ofGetWidth(), 40);
	ofAddListener(gui->newGUIEvent, this, &testApp::guiEvent);
}

//--------------------------------------------------------------
void testApp::update(){

}

//--------------------------------------------------------------
void testApp::draw(){

}

//--------------------------------------------------------------
void testApp::guiEvent(ofxUIEventArgs &e)
{
	string name = e.widget->getName();
	
	if(name == "OPEN")
	{
		bLock = !bLock;
		if(bLock){
			string path = fileDialog->getStringFromDialog();
			string truePath = "";
			if(path != "") {
				int len = path.length();
				int i=1;
				while(1)
				{
					if(path.substr(len-i, 1) == "\\"){
						truePath = path.substr(0, len-i+1);
						break;
					}
					else {
						i++;
						if(i>=len) {
							break;
						}
					}
				}
			} else
			{
				dir.close();
			}
			if(truePath != "")
			{
				ofxUITextArea* text = (ofxUITextArea*)gui->getWidget("TEXT");
				text->setTextString(truePath);
				string::size_type pos = 0;
				while((pos = truePath.find("\\", pos)) != string::npos){
					truePath.replace(pos, 1, "/");
				}
				dir.listDir(truePath);
			}
		}
		
	}

	if(name == "TRANSLATE")
	{
		if(dir.size() != 0)
		{
			int index = 0;
			for(int i=0; i
思路:用ofxUI的button触发ofxFileDialog选择要重命名文件夹中的一个文件,继而算出文件夹路径,然后又ofDirectory遍历,然后依次修改dir中文件名字。

方法简陋,仅作记录,大神勿喷。


你可能感兴趣的:(C++,openframeworks)