2015-03-22 2 views
0

Интересно, как сделать ярлык на основе следующего имени в списке файлов в алфавитном порядке.Создать ярлык на основе порядка файлов

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

Season.ini

Local.ini

C: \ Серия

Код имеет несколько проблем, как отсутствие изменений сезона автоматически, а не добавить 0, когда у вас есть уникальные номера, как 1, 2, 3, 4, 5, 6, 7, 8, 9, не убедитесь, что файл, который будет создан ярлык не существует ...

+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 и Shor tcut.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 
Смежные вопросы