我有一个文件夹,其中包含.jpg
个以数字命名的图像文件:
1.jpg 2.jpg ... 100.jpg
如何反转文件名,以便最后一个是第一个,即:
100.jpg
变为1.jpg
等等?
@echo off
setlocal enabledelayedexpansion
::get files count
set count=0
for %%x in (*.jpg) do (
set /a count+=1
)
::rename
for /L %%a in (1,1,%count%) do (
set /a new=101-%%a
ren "!new!.jpg" "temp.jpg"
ren "%%a.jpg" "!new!.jpg"
ren "temp.jpg" "%%a.jpg"
)
endlocal
我尝试将101更改为%count%+ 1 如果总文件数超过50,则不执行此代码。
任何帮助将不胜感激。 提前谢谢!
答案 0 :(得分:3)
@echo off
setlocal enabledelayedexpansion
for /L %%a in (1,1,50) do (
set /a new=101-%%a
ren "!new!.jpg" "temp.jpg"
ren "%%a.jpg" "!new!.jpg"
ren "temp.jpg" "%%a.jpg"
)
其中“temp.jpg”可以是任何尚不存在的文件名。
答案 1 :(得分:1)
我想你想要对所有编号的jpg进行排序,不仅仅是1..100 排序(反向)数字需要将它们带到一个独特的长度。
此批次通过在数字中添加10万来实现此目的 (您可以增加此值,但必须考虑第二个循环中的[0-9]的数量)
<form>
<input class="typeahead" type="text" placeholder="search">
<input type="hidden" name="result" value="" />
<input type="submit">
</form>
由于(重新)使用相同的名称,powershell脚本也将具有中间步骤。这里有一个额外的临时扩展名.tmp:
$(function() {
// Instantiate the Bloodhound suggestion engine
var curr = {};
var suggestions = new Bloodhound({
datumTokenizer: function(datum) {
return Bloodhound.tokenizers.whitespace(datum.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: 'includes/livesearch.php?key=%QUERY',
wildcard: '%QUERY',
filter: function (name) {
curr[name.name] = name.id;
// Map the remote source JSON array to a JavaScript object array
return $.map(name, function (name, index) {
return index === "name" ? {
value: name
} : null;
});
}
}
});
// Initialize the Bloodhound suggestion engine
suggestions.initialize();
// Instantiate the Typeahead UI
$(".typeahead").typeahead({
hint: true,
minLength: 2
}, {
limit: 7,
displayKey: 'value',
source: suggestions.ttAdapter(),
})
.on("typeahead:selected", function (e, datum) {
$("form [name=result]").val(curr[datum.value]); // set value here
curr = {};
});
})
答案 2 :(得分:1)
只要您知道编号从1到最大是连续的,并且没有名为* .jpg.temp的预先存在的文件:
@echo off
setlocal enableDelayedExpansion
for /f %%N in ('dir /b /a-d *.jpg^|find /c /v ""') do set max=%%N
set N=1
for /l %%N in (1 1 %max%) do (
ren %%N.jpg !N!.jpg.temp
set /a N+=1
)
ren *.jpg.temp *.
如果编号中可能存在间隙,但您希望最终结果是连续的,则需要按照LotPings描述的数字排序。我会使用JSORT.BAT - 一个混合批处理/ JScript排序实用程序,它能够以数字方式对嵌入数字进行排序。
@echo off
setlocal enableDelayedExpansion
set N=1
for /f "delims=" %%F in ('dir /b /a-d *.jpg^|jsort /n /r') do (
ren "%%F" !N!.jpg.temp
set /a N+=1
)
ren *.jpg.temp *.