安卓开发小工具--图片批量更名器_windows版

原创文章,转载请注明出处 https://juejin.im/post/5ad016056fb9a028b77b37c2

这是一个安卓开发人员的js尝试,如有js代码的使用不当,或者是适配相关问题,欢迎留言,万分感谢

先上小工具的截图,就是一个html文件。没法上传文件,文末给出了源代码,自己随便保存一个html网页,代码复制了替换掉原网页代码,就可以使用了~亲测可用~

tips:具体能支持哪些浏览器没有具体测试,我用的是360的浏览器;如果是新建txt文件再复制进去,需要另存为utf-8的编码格式才能使用。我的电脑新建的txt文件是ANSI编码格式~


使用流程和结果效果图:

                  

                     

                       

一、背景介绍

       开发APP的时候,总是需要一些图标放在app内的,安卓的drawable文件夹有多个,当图片又很多的时候,命名真的是个繁琐而又无趣的工作量。于是开始打起批量命名程序的主意。

       由于本人用的是window系统,首先想到的就是批处理命令。之前一直在用excel的公式生成这些批量的代码,最近想到了js,开始做尝试。

       本来是想做到直接下载bat文件的,但是由于使用的下载文件的js方法固定下载的文件都是utf-8编码格式的,但是window的批处理命令又不支持这个,会乱码。utf-8转ANSI又超出了本人的能力,只好停留在这个需要手动复制bat命令文本的版本。如果您有更好的解决方案,敬请留言。

二、使用介绍

      相信上面的截图已经很明白了,不明白的看页面,看代码注释就能明白。。。不再赘述。。。

三、源代码

注释掉的按钮代码就是下载bat文件的了,函数funDownLoad()。有兴趣的朋友可以尝试一下。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>安卓图片更名器</title>
		<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>	
		
		<script type="text/javascript">
			function addDpi(){
				var dpi_name =$('#dpi_input_add').val();
				var innerHtml = document.getElementById('dpi_names').innerHTML;
				var i=1;
				while(innerHtml.indexOf('dpi_name_id'+i)>=0 && i<10){
					i++;
				}
				if(i>=10){
					alert('最多添加10个文件夹名~!');
				}else{
					document.getElementById('dpi_names').innerHTML = 
						innerHtml+'<input style=\'margin:5px;\' id=\'dpi_name_id'+i+"\' value=\'"+dpi_name+"\'/><br/>";
				}
			}


			/** 
			* 从 file 域获取 本地图片 url 
			*/ 
			function getFileUrl(sourceId,index) { 
				var url; 
				if (navigator.userAgent.indexOf("MSIE")>=1) { // IE 
					url = document.getElementById(sourceId).value; 
				} else if(navigator.userAgent.indexOf("Firefox")>0) { // Firefox 
					url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(index)); 
				} else if(navigator.userAgent.indexOf("Chrome")>0) { // Chrome 
					url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(index)); 
				} 
				return url; 
			} 

			function fileSelect1() {
			    var file = document.getElementById("fileSelected1").files;
			    //var ret ='';
			    var file_new_name_edit_views = "";
			    for(var i = 0, len = file.length; i < len; i++) {
			        var f = file[i];
			        var type = f.type;
			        if(type){
			        	type = type.substr(type.indexOf('\/'),f.type.length)
			        				.replace('\/','');
			        	//ret += (i+':'+f.name  + '(' + f.type + ')'+type+'<br\>');	
			        	//生成对应的编辑新名字的位置
			        	file_new_name_edit_views +=
				        	'<tr>'
				        		+'<td width="100">'
				        			+'<img id="imgPre1" src="'+getFileUrl("fileSelected1",i)+'" width="50px" height="50px" style="display: block;" />'
			        			+'</td>'
				        		+'<td width="100">'
				        			+'<div id="file_old_name'+i+'">'+f.name+'</div>	'
			        			+'</td>'
			        			+'<td width="100">'
				        			+'<input id="file_new_name'+i+'" type="text" placeholder="'+f.name.replace('.'+type,'')+'"/>  '
			        			+'</td>'
		        			+'</tr>';
			        }else{
			        	//ret+= (i+':'+f.name  + '(' + f.type + ')---<br\>');	
			        }
			    }
			    //document.getElementById('ret').innerHTML = ret;
			    document.getElementById('edit_file_names').innerHTML = file_new_name_edit_views;
			}
			
			function getBatText() {
			    var file = document.getElementById("fileSelected1").files;
			    var ret ='';
			    for(var i = 0, len = file.length; i < len; i++) {
			        var f = file[i];
					var innerHtml = document.getElementById('dpi_names').innerHTML;
			        var j=1;
			        var new_name_input = document.getElementById('file_new_name'+i);
			        if(new_name_input){
						var file_new_name = new_name_input.value.trim();
						//校验新的名字是否重复(已被使用,则弹框提示)
						if(file_new_name && file_new_name.length!=0){
							if(ret.indexOf(file_new_name+'.*')>=0){
								alert('您为文件【'+f.name+'】新命名的名字【'+file_new_name+'】已为前面的文件赋值过了,请检查并更改后重新操作');
								return;
							}else{
								while(innerHtml.indexOf('dpi_name_id'+j)>=0 && j<10){
									var dpi_name_temp = document.getElementById('dpi_name_id'+j).value;
									//使用双引号,防止文件名中的空格导致的重命名失败。new_name已经trim过,无需添加
									ret +='ren .\\'+dpi_name_temp+'\\\"'+f.name+'\" '+file_new_name+'.*<br>';
									j++;
								}
							}
						}						
			        }
			    }
			    document.getElementById('bat_text').innerHTML = ret;
			}
			
			
			function funDownload() {
				var innerHTML = document.getElementById('bat_text')
										.innerHTML;
				//alert(innerHTML);
				var content =  innerHTML.replace(new RegExp('<br>',"gm"),'\r\n');
				//alert(content);				
				if(content){
					var filename = "rename.bat";
				    // 创建隐藏的可下载链接
				    var eleLink = document.createElement('a');
				    eleLink.download = filename;
				    eleLink.style.display = 'none';
					//添加:Unicode签名BOM(Byte Order Mark)EF BB BF ,和结束字符2E 2A ,
					//用于windows上的utf-8编码的文件能被bat命令正常处理
				    // 字符内容转变成blob地址
				    //var blob = new Blob([new Uint8Array([0xEF, 0xBB, 0xBF]), content]); // UTF-8 BOM
				    var blob = new Blob(['\ufeff'+content]); // 导出csv 格式的话,添加BOM头
				    eleLink.href = URL.createObjectURL(blob);
				    // 触发点击
				    document.body.appendChild(eleLink);
				    eleLink.click();
				    // 然后移除
				    document.body.removeChild(eleLink);					
				}else{
					alert('暂无内容可生成文件,请确认~');
				}
			}
			function strToHexCharCode(str) {
			  if(str === "")
			    return "";
			  var hexCharCode = [];
			  hexCharCode.push("0x"); 
				hexCharCode.push("EFBBBF");
			  for(var i = 0; i < str.length; i++) {
			    hexCharCode.push((str.charCodeAt(i)).toString(16));
			  }
				hexCharCode.push("2E2A");
			  return hexCharCode.join("");
			}

		</script>

	</head>

	<body>
		<p style="background-color: #ddd;padding:10px;">作者:朱佩佩  安卓开发工程师 使用介绍:https://juejin.im/post/5ad016056fb9a028b77b37c2</p>
		<p>注:步骤2中的选择文件夹使用的方法webkitdirectory,但是这并不是一个标准支持的属性,经测试,目前仅支持chrome浏览器,IE11/MOZ均不支持  safari暂未测试,谨慎使用。</p>
		
        <br />1.编辑对应的文件夹名称,点击确认按钮,生成bat改名文件内容。<br />
		<input  style="margin:5px;" id="dpi_input_add" type="text" placeholder="输入dpi文件夹名"/>  
		<button onclick="addDpi()">新增</button><br />
        <div id="dpi_names" style="background-color: #ddd;padding:10px 0px 10px 0px ;">
			<input style="margin:5px;" id="dpi_name_id1" value="mipmap-mdpi"/><br/>
			<input style="margin:5px;" id="dpi_name_id2" value="mipmap-xhdpi"/><br/>
			<input style="margin:5px;" id="dpi_name_id3" value="mipmap-xxxhdpi"/><br/>
        </div>
		<br /><br />
        <br />2.点击下方按钮选择一个dpi文件夹,或拖动文件夹到下方的按钮上: <br />
        <input  type="file" id="fileSelected1"   webkitdirectory  onchange="fileSelect1()" /> 
        <br /><br />
		<br />3.生成前需选择要生成的对应文件夹名称(不含后缀,且新名称做了重复的校验,并且将删除掉空字符串,未命名的文件将被忽略):<br />
		<table id="edit_file_names" style="max-height:300px;overflow:auto;padding:10px;background-color: #eee;width:300;cellpadding:0;cellspacing:0;">
            <tr>
                <td width="50px">
					<img id="imgPre1" src="" width="50px" height="50px" style="display: block;" />
                </td>
                <td width="200px">
					<div id="file_old_name1">样例.png</div>	
                </td>
                <td width="200px">
					<input id="file_new_name1" type="text" placeholder="样例"/>  
                </td>
            </tr>
        </table>
		<br /><br />
		<br />4.点击按钮生成文本。复制以下内容并创建bat文件。或者点击生成并下载bat文件直接使用:<br />
		<button id="btn" onclick="getBatText()">生成bat文本</button>
		<!-- <button onclick="funDownload()">下载bat文件</button> -->
		<br /><br />
		<div>----生成的bat文件信息如下:</div>
		<div id="bat_text" style="background-color: #aaa;padding: 10px;max-height: 300px;overflow:auto;">样例:<br/>ren a.png b.*<br/>ren c.png d.*<br/>ren c.png d.*</div>
		
				
	</body>
</html>
复制代码




转载于:https://juejin.im/post/5ad016056fb9a028b77b37c2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值