根据文件的顺序创建快捷方式

时间:2015-03-22 22:36:05

标签: batch-file vbscript

我想知道如何按字母顺序根据文件列表中的下一个名称制作快捷方式。

Folder:

C:\Series

Season01 - Ep01.avi
Season01 - Ep02.avi
Season02 - Ep01.avi
Season02 - Ep02.avi
Season03 - Ep01.avi
Season04 - Ep01.avi

Desktop:

Season01 - Ep02.lnk

打开文件时,它会删除快捷方式 Season01 - Ep02.lnk 并创建 Season03 - Ep01.lnk 的新快捷方式,依此类推。

@Edit

有人问我,这是我的超级不完整的代码。

Sub Main()

Set wsc = CreateObject("WScript.Shell")
Set Shell = CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Const ForReading = 1, ForWriting = 2, ForAppending = 8, CreateIfNeeded = True

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objTextFile = objFSO.OpenTextFile("Local.ini", ForReading)

For i = 4 to 3
    objTextFile.ReadLine
Next

strLine = objTextFile.ReadLine

Set objTextFile = objFSO.OpenTextFile("Episode.ini", ForReading)

For i = 4 to 3
    objTextFile.ReadLine
Next

strLine2 = objTextFile.ReadLine

Set objTextFile = objFSO.OpenTextFile("Season.ini", ForReading)

For i = 4 to 3
    objTextFile.ReadLine
Next

strLine3 = objTextFile.ReadLine
DesktopPath = Shell.SpecialFolders("Desktop")


If (fso.FileExists(wsc.SpecialFolders("desktop") & "\Season01 - Ep01.lnk")) Then

Set link = Shell.CreateShortcut(DesktopPath & "\Season"& strLine3--01 &" - Ep" & strLine2--01 & ".lnk")
link.Description = "Episode"
link.Arguments = ""
link.TargetPath = strLine & "\Season"& strLine3--01 &" - Ep"& strLine2--01 &".rmvb"
link.WindowStyle = 1
link.IconLocation = strLine & "\Season"& strLine3--01 &" - Ep"& strLine2--01 &".rmvb"
link.HotKey = ""
link.WorkingDirectory = strLine
link.Save

strAtalho = "Season"& strLine3-01 &" - Ep"& strLine2-01 &".rmvb"
Set objShell = CreateObject("WScript.Shell") 
objDesktop = objShell.SpecialFolders("Desktop") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
objFSO.DeleteFile(objDesktop & "\" & strAtalho)

  WScript.Quit()

Else

End If

  WScript.Quit()

End Sub 

On Error Resume Next
  Main
  If Err.Number Then
     WScript.Quit 4711
  End If

-

  

内部档案:

     

Episode.ini

     

01

     

Season.ini

     

01

     

Local.ini

     

C:\系列

代码有几个问题,因为没有季节自动更改,因为当你有1,2,3,4,5,6,7,8,9的唯一数字时不加0,不验证文件那个将被创建的快捷方式不存在...

1 个答案:

答案 0 :(得分:0)

好吧,经过多次搜索,我设法......

使用它将需要以下程序:

https://helgeklein.com/downloads/DesktopRefresh/current/x86/DesktopRefresh.zip http://optimumx.com/download/Shortcut.zip

@echo off

If exist "Arquivos\Config.ini" For /f "usebackq delims=" %%x in ("Arquivos\Config.ini") do (set "%%x")

If not Exist "Arquivos\Config.ini" Set /p Localizacao="Enter the file location: " & Set Numeracao=1
Dir /b "%Localizacao%" >"Arquivos\Arquivos.ini"
Echo Fim.Final >>"Arquivos\Arquivos.ini"

:Atalhos

If Exist "C:\Users\%username%\Desktop\%ep2%.lnk" Del /q "C:\Users\%username%\Desktop\%ep2%.lnk">nul 2>&1 & Start /Min /Wait Arquivos\DesktopRefresh.exe>nul 2>&1

setlocal EnableDelayedExpansion
set "cmd=findstr /R /N "^^" Arquivos\Arquivos.ini | find /C ":""

for /f %%a in ('!cmd!') do set numeros=%%a

set linhas=%Numeracao%
set curr=1
for /f "delims=" %%a in ('type Arquivos\Arquivos.ini') do (
    for %%b in (!linhas!) do (
        if !curr!==%%b Set Ep1=%%a
    )
    set /a "curr = curr + 1"
)

Set Ep2=%Ep1%
set "find=*."
call set delete=%%Ep2:!find!=%%
call set Ep2=%%Ep2:!delete!=%%
Set Ep2=%Ep2:.=%

IF "%Ep2%"=="Fim" Goto Fim

Arquivos\Shortcut.exe /F:"C:\Users\%username%\Desktop\%ep2%.lnk" /A:C /t:"%Localizacao%\%Ep1%">nul 2>&1
Set /A Numeracao = %linhas% + 1

Set Localizacao > Arquivos\Config.ini
Set Ep2 >> Arquivos\Config.ini
Set Numeracao >> Arquivos\Config.ini
exit

:Fim

Set Numeracao=1

If Exist "C:\Users\%username%\Desktop\%ep2%.lnk" Del /q "C:\Users\%username%\Desktop\%ep2%.lnk">nul 2>&1 & Start /Min /Wait Arquivos\DesktopRefresh.exe>nul 2>&1

setlocal EnableDelayedExpansion
set "cmd=findstr /R /N "^^" Arquivos\Arquivos.ini | find /C ":""

for /f %%a in ('!cmd!') do set numeros=%%a

set linhas=1
set curr=1
for /f "delims=" %%a in ('type Arquivos\Arquivos.ini') do (
    for %%b in (!linhas!) do (
        if !curr!==%%b Set Ep1=%%a
    )
    set /a "curr = curr + 1"
)

Set Ep2=%Ep1%
set "find=*."
call set delete=%%Ep2:!find!=%%
call set Ep2=%%Ep2:!delete!=%%
Set Ep2=%Ep2:.=%

Arquivos\Shortcut.exe /F:"C:\Users\%username%\Desktop\%ep2%.lnk" /A:C /t:"%Localizacao%\%Ep1%">nul 2>&1
Set /A Numeracao = 1 + 1

Set Localizacao > Arquivos\Config.ini
Set Ep2 >> Arquivos\Config.ini
Set Numeracao >> Arquivos\Config.ini
Exit
  • 将脚本放在一个文件夹和程序中,名为" Arquivos"
  • 订单将保持这种状态
  • Script.bat
  • 文件夹 - Arquivos
  • 在文件夹中:DesktopRefresh.exe和Shortcut.exe

注意:虽然不是最终版本,但它可以与任何类型的文件完美配合。

<强> @Edit

我刚刚为那些想要下载相同内容的人完成了脚本: https://www.mediafire.com/?w46t526jjth8drd

如果下载已关闭,则以下是源代码

注意:您需要使用其他文件进行同样的工作。

@Echo off
Title Criar atalhos em ordem alfab‚tica
mode con:lines=3 cols=25
Color 1f

CD /D "%~dp0"

If Exist "Arquivos\Comando.ini" For /f "usebackq delims=" %%x in ("Arquivos\Comando.ini") do (set "%%x")
If Exist "Arquivos\Config.ini" For /f "usebackq delims=" %%x in ("Arquivos\Config.ini") do (set "%%x")
If Exist "Arquivos\Arquivos.ini" Goto Atalhos
If Exist "Arquivos\Comando.ini" Goto Atalhos
If Exist "Arquivos\Config.ini" Goto Atalhos

for %%F in (""%1"") do Set "Local-dos-Arquivos=%%~F"
for %%F in ("%Local-dos-Arquivos%") do IF "%%~F" NEQ """" Set "Local-dos-Arquivos=%Local-dos-Arquivos:"=%" & Set Numeracao=1 & Goto LocaldosArquivos2

:LocaldosArquivos
mode con:lines=18 cols=78
Set "Local-dos-Arquivos=r1u4unoiwqa6">nul 2>&1
cls
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º  Local dos arquivos  º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º ² Arraste a pasta com os arquivos para dentro desta janela ou            º
echo  º ² digite abaixo a localiza‡Æo da mesma.                                  º
echo  º ²                                                                        º
echo  º ² Exemplo: C:\Users\Public\Videos\Animes                                 º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
Set /p Local-dos-Arquivos="¯ Local dos arquivos: " 
Set "Local-dos-Arquivos=%Local-dos-Arquivos:"=%"
Set Numeracao=1
IF "%Local-dos-Arquivos%"=="r1u4unoiwqa6" Goto LocaldosArquivos


:LocaldosArquivos2
mode con:lines=18 cols=78
Set "Menu=">nul 2>&1
cls
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º  Local dos arquivos  º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º ² Est  ‚ a localiza‡Æo da pasta com os arquivos?                         º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo  º
for %%F in ("%Local-dos-Arquivos%") do Echo  º ¯ %%~F
echo  º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º ¯ Menu:                                                                  º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo  º ² (1) Sim                                                                º
echo  º ² (2) NÆo                                                                º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Set/p Menu="¯ Menu: "
IF "%Menu%"=="1" Goto Iniciar
IF "%Menu%"=="2" Goto LocaldosArquivos
Goto LocaldosArquivos2

:Iniciar
if not exist "%Local-dos-Arquivos%" Cls & Start /Wait Arquivos\Error.vbs & Goto LocaldosArquivos

:Nome-AnimeSerie1
Set "Serie_Anime=">nul 2>&1
cls
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º  Nome do Anime/S‚rie  º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º ² Digite abaixo o nome do Anime/S‚rie.                                   º
echo  º ²                                                                        º
echo  º ² Exemplo: Shigatsu wa Kimi no Uso                                       º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
Set /p Serie_Anime="¯ Nome: " 
IF "%Serie_Anime%"=="" Goto Nome-AnimeSerie1


:Nome-AnimeSerie2
Set "Menu=">nul 2>&1
cls
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º  Nome do Anime/S‚rie  º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º ² Este ‚ o nome do Anime/S‚rie?                                          º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo  º
for %%F in ("%Serie_Anime%") do Echo  º ¯ %%~F
echo  º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º ¯ Menu:                                                                  º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo  º ² (1) Sim                                                                º
echo  º ² (2) NÆo                                                                º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Set/p Menu="¯ Menu: "
IF "%Menu%"=="1" Goto Atalhos
IF "%Menu%"=="2" Goto Nome-AnimeSerie1
Goto Nome-AnimeSerie2

:Atalhos
If Exist "Arquivos\Config.ini" For /f "usebackq delims=" %%x in ("Arquivos\Config.ini") do (set "%%x")
Dir /a-d /b "%Local-dos-Arquivos%" >Arquivos\Arquivos.ini
Echo r1u4unoiwqa6.Final >>Arquivos\Arquivos.ini

Set Local-dos-Arquivos > Arquivos\Config.ini
Set Serie_Anime >> Arquivos\Config.ini
Set Numeracao > Arquivos\Comando.ini

If Exist "C:\Users\%username%\Desktop\%ep2% - %Serie_Anime%.lnk" Del /q "C:\Users\%username%\Desktop\%ep2% - %Serie_Anime%.lnk">nul 2>&1 & Start /Min /Wait Arquivos\DesktopRefresh.exe>nul 2>&1

setlocal EnableDelayedExpansion

For /f "usebackq delims=" %%x in ("Arquivos\Comando.ini") do (set "%%x")
For /f "usebackq delims=" %%x in ("Arquivos\Config.ini") do (set "%%x")

set "cmd=findstr /R /N "^^" Arquivos\Arquivos.ini | find /C ":""

for /f %%a in ('!cmd!') do set Numeros=%%a

set Linhas=%Numeracao%
set Atual=1
for /f "delims=" %%a in ('type Arquivos\Arquivos.ini') do (
    for %%b in (!Linhas!) do (
        if !Atual!==%%b Set Ep1=%%a
    )
    set /a "Atual = Atual + 1"
)

Set Ep2=%Ep1%
set "find=*."
call set delete=%%Ep2:!find!=%%
call set Ep2=%%Ep2:!delete!=%%
Set Ep2=%Ep2:.=%

Set Ep1 > Arquivos\Comando.ini
Set Ep2 >> Arquivos\Comando.ini
Set Linhas >> Arquivos\Comando.ini
Set Numeracao >> Arquivos\Comando.ini

endlocal
For /f "usebackq delims=" %%x in ("Arquivos\Comando.ini") do (set "%%x")
For /f "usebackq delims=" %%x in ("Arquivos\Config.ini") do (set "%%x")

IF "%Ep2%"=="r1u4unoiwqa6" Goto Fim

Start /Min /Wait Arquivos\Shortcut.exe /F:"C:\Users\%username%\Desktop\%ep2% - %Serie_Anime%.lnk" /A:C /t:"%Local-dos-Arquivos%\%Ep1%" /D:"Epis¢dio de %Serie_Anime%">nul 2>&1
If Not Exist "C:\Users\%username%\Desktop\[ Atalhos ].lnk" Echo %Serie_Anime%>Arquivos\Atalho.ini & Start /Min /Wait Arquivos\Atalho.vbs>nul 2>&1
Set /A Numeracao = %Linhas% + 1
:::::::::::::::::::::::::::::::::::::::::::::
Set Local-dos-Arquivos > Arquivos\Config.ini
Set Serie_Anime >> Arquivos\Config.ini
:::::::::::::::::::::::::::::::::::::::::::::
Set Ep1 > Arquivos\Comando.ini
Set Ep2 >> Arquivos\Comando.ini
Set Numeracao >> Arquivos\Comando.ini
:::::::::::::::::::::::::::::::::::::::::::::
Exit

:Fim
Del /q "Arquivos\Arquivos.ini">nul 2>&1
Del /q "Arquivos\Atalho.ini">nul 2>&1
Del /q "Arquivos\Comando.ini">nul 2>&1
Del /q "Arquivos\Config.ini">nul 2>&1
Set "Local-dos-Arquivos=">nul 2>&1
Set "Serie_Anime=">nul 2>&1
Set "Linhas=">nul 2>&1
Set "Ep1=">nul 2>&1
Set "Ep2=">nul 2>&1
Start /Wait Arquivos\Final.vbs>nul 2>&1
Goto LocaldosArquivos