4e discussion avec 53s

  • Auteur de la discussion ZZZ
  • Date de début
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
dans ce code :

Code:
@echo off

call:winAlert Info , C:\Users\LenovoX250\Desktop\favicon.ico , this is my personal title. , this is my personal paragraph.
pause
goto :eof

:winAlert

set icon=%1
set iconPath=%2
set title=%3
set paragraph=%4

echo [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = "%icon%"; $objNotifyIcon.Icon = "%iconPath%"; $objNotifyIcon.BalloonTipText = "%title%"; $objNotifyIcon.BalloonTipTitle = "%paragraph%"; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1

powershell.exe -ExecutionPolicy Bypass -File "C:\Users\LenovoX250\Desktop\alert.ps1"

exit /b

pourquoi le "$objNotifyIcon.BalloonTipTitle" prends la valeur de "is" et "$objNotifyIcon.BalloonTipText" prends la valeur de "this", et comment le résoudre?
 
53secondes
Fofobot 53secondes.com
Messages
422
Fofocoins
150
Le problème ici est que les paramètres passés au script PowerShell sont des chaînes de caractères contenant des espaces. Lorsqu'une chaîne est passée en tant qu'argument, elle doit être placée entre guillemets pour être considérée comme une seule entrée. Sans guillemets, chaque élément séparé par un espace est considéré comme un argument séparé.

Dans ce cas, les valeurs de "this is my personal title" et "this is my personal paragraph" contiennent des espaces, mais elles ne sont pas entourées de guillemets dans la ligne de commande où la fonction "winAlert" est appelée. Cela signifie que le script PowerShell interprète ces valeurs comme deux arguments distincts et les assigne aux paramètres de manière incorrecte.

Pour résoudre ce problème, il suffit d'entourer les valeurs des paramètres avec des guillemets. Voici un exemple corrigé :

Code:
@echo off

call:winAlert "Info" , "C:\Users\LenovoX250\Desktop\favicon.ico" , "this is my personal title." , "this is my personal paragraph."
pause
goto :eof

:winAlert

set icon=%1
set iconPath=%2
set title=%3
set paragraph=%4

echo [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = "%icon%"; $objNotifyIcon.Icon = "%iconPath%"; $objNotifyIcon.BalloonTipText = "%paragraph%"; $objNotifyIcon.BalloonTipTitle = "%title%"; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1

powershell.exe -ExecutionPolicy Bypass -File "C:\Users\LenovoX250\Desktop\alert.ps1"

exit /b

Maintenant, les guillemets entourent les valeurs des paramètres et les espaces dans les valeurs ne seront plus interprétés comme des séparateurs d'arguments.
 
L
L'anonyme 99%
Anonyme
Ptn vous êtes des génies si vous comprenez ce truc incompréhensible ;-;
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Le problème ici est que les paramètres passés au script PowerShell sont des chaînes de caractères contenant des espaces. Lorsqu'une chaîne est passée en tant qu'argument, elle doit être placée entre guillemets pour être considérée comme une seule entrée. Sans guillemets, chaque élément séparé par un espace est considéré comme un argument séparé.

Dans ce cas, les valeurs de "this is my personal title" et "this is my personal paragraph" contiennent des espaces, mais elles ne sont pas entourées de guillemets dans la ligne de commande où la fonction "winAlert" est appelée. Cela signifie que le script PowerShell interprète ces valeurs comme deux arguments distincts et les assigne aux paramètres de manière incorrecte.

Pour résoudre ce problème, il suffit d'entourer les valeurs des paramètres avec des guillemets. Voici un exemple corrigé :

Code:
@echo off

call:winAlert "Info" , "C:\Users\LenovoX250\Desktop\favicon.ico" , "this is my personal title." , "this is my personal paragraph."
pause
goto :eof

:winAlert

set icon=%1
set iconPath=%2
set title=%3
set paragraph=%4

echo [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = "%icon%"; $objNotifyIcon.Icon = "%iconPath%"; $objNotifyIcon.BalloonTipText = "%paragraph%"; $objNotifyIcon.BalloonTipTitle = "%title%"; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1

powershell.exe -ExecutionPolicy Bypass -File "C:\Users\LenovoX250\Desktop\alert.ps1"

exit /b

Maintenant, les guillemets entourent les valeurs des paramètres et les espaces dans les valeurs ne seront plus interprétés comme des séparateurs d'arguments.
cela me renvoie

Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 243
+ ... Icons]::Information; $objNotifyIcon.BalloonTipIcon = ""Info""; $objNo ...
+ ~~~~~~
Jeton inattendu « Info"" » dans l’expression ou l’instruction.
Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 275
+ ... NotifyIcon.Icon = ""C:\Users\LenovoX250\Desktop\favicon.ico""; $objNo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jeton inattendu « C:\Users\LenovoX250\Desktop\favicon.ico"" » dans l’expression ou l’instruction.
Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 352
+ ... Desktop\favicon.ico""; $objNotifyIcon.BalloonTipText = ""this is my p ...
+ ~~~~
Jeton inattendu « this » dans l’expression ou l’instruction.
Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 421
+ ... ersonal paragraph.""; $objNotifyIcon.BalloonTipTitle = ""this is my p ...
+ ~~~~
Jeton inattendu « this » dans l’expression ou l’instruction.
+ CategoryInfo : ParserError: :)) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
 
53secondes
Fofobot 53secondes.com
Messages
422
Fofocoins
150
cela me renvoie

Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 243
+ ... Icons]::Information; $objNotifyIcon.BalloonTipIcon = ""Info""; $objNo ...
+ ~~~~~~
Jeton inattendu « Info"" » dans l’expression ou l’instruction.
Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 275
+ ... NotifyIcon.Icon = ""C:\Users\LenovoX250\Desktop\favicon.ico""; $objNo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jeton inattendu « C:\Users\LenovoX250\Desktop\favicon.ico"" » dans l’expression ou l’instruction.
Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 352
+ ... Desktop\favicon.ico""; $objNotifyIcon.BalloonTipText = ""this is my p ...
+ ~~~~
Jeton inattendu « this » dans l’expression ou l’instruction.
Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 421
+ ... ersonal paragraph.""; $objNotifyIcon.BalloonTipTitle = ""this is my p ...
+ ~~~~
Jeton inattendu « this » dans l’expression ou l’instruction.
+ CategoryInfo : ParserError: :)) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
Le script PowerShell peut rencontrer des problèmes si les guillemets sont insérés dans les valeurs des paramètres. Pour éviter cela, vous pouvez remplacer les guillemets doubles par des guillemets simples et échapper les apostrophes dans la chaîne de caractères en utilisant un double apostrophes. Voici une version mise à jour du script :

Code:
@echo off

call:winAlert 'Info' , 'C:\Users\LenovoX250\Desktop\favicon.ico' , 'this is my personal title.' , 'this is my personal paragraph.'
pause
goto :eof

:winAlert

set icon='%1'
set iconPath='%2'
set title='%3'
set paragraph='%4'

echo [void] [System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = '%icon%'; $objNotifyIcon.Icon = '%iconPath%'; $objNotifyIcon.BalloonTipText = '%paragraph%'; $objNotifyIcon.BalloonTipTitle = '%title%'; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1

powershell.exe -ExecutionPolicy Bypass -File 'C:\Users\LenovoX250\Desktop\alert.ps1'

exit /b

Ici, chaque paramètre est entouré de guillemets simples, tandis que les guillemets doubles sont remplacés par des guillemets simples à l'intérieur de chaque paramètre. Les apostrophes sont échappées en utilisant un double apostrophes. Cela permet au script PowerShell de traiter correctement les chaînes de caractères et de résoudre les problèmes d'interprétation de la chaîne de caractères.
 
L
L'anonyme 99%
Anonyme
et doué en informatique
 
L
L'anonyme 99%
Anonyme
Nan mais moi tu me mets un truc comme ça plutôt mourir ;-; j'y comprend rien :'O
Après quand je disais incompréhensible c'était pas méchant, juste que j'y pige rien c tout !
 
L
L'anonyme 99%
Anonyme
C'est ma passion, je suis un matheux profile scientifique et informatique, à contrario, je suis nul en français, phylo et histoire.
eh bé... ça relève quand même du génie pour moi ;-;
 
L
L'anonyme 99%
Anonyme
Avec de la volonté ça passe en vrai.
Avec le temps, le code devient comme ta langue maternelle, tu le parle couramment et sans réfléchir!
Dire que moi j'ai du mal à accéder aux paramètres que je veux dans mon tel 😭😅
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Dire que moi j'ai du mal à accéder aux paramètres que je veux dans mon tel 😭😅
C'est pas si nul que ça, je déteste les téléphones, niveau programmation, tu peux RIEN faire, niet ! Même pas un peu de python. Tu n'a que des applis déjà programmées auquel tu n'a accès qu'à leur interface utilisateur. De la crotte !
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Le script PowerShell peut rencontrer des problèmes si les guillemets sont insérés dans les valeurs des paramètres. Pour éviter cela, vous pouvez remplacer les guillemets doubles par des guillemets simples et échapper les apostrophes dans la chaîne de caractères en utilisant un double apostrophes. Voici une version mise à jour du script :

Code:
@echo off

call:winAlert 'Info' , 'C:\Users\LenovoX250\Desktop\favicon.ico' , 'this is my personal title.' , 'this is my personal paragraph.'
pause
goto :eof

:winAlert

set icon='%1'
set iconPath='%2'
set title='%3'
set paragraph='%4'

echo [void] [System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = '%icon%'; $objNotifyIcon.Icon = '%iconPath%'; $objNotifyIcon.BalloonTipText = '%paragraph%'; $objNotifyIcon.BalloonTipTitle = '%title%'; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1

powershell.exe -ExecutionPolicy Bypass -File 'C:\Users\LenovoX250\Desktop\alert.ps1'

exit /b

Ici, chaque paramètre est entouré de guillemets simples, tandis que les guillemets doubles sont remplacés par des guillemets simples à l'intérieur de chaque paramètre. Les apostrophes sont échappées en utilisant un double apostrophes. Cela permet au script PowerShell de traiter correctement les chaînes de caractères et de résoudre les problèmes d'interprétation de la chaîne de caractères.
Bon GPT, arrête de merder, ton code m'a encore fais une erreur :

Exception lors de la définition de «BalloonTipIcon»: «Impossible de convertir la valeur «'Info'» en type «
System.Windows.Forms.ToolTipIcon». Erreur: «Impossible de faire correspondre le nom d'identificateur 'Info' à un nom
d'énumérateur valide. Spécifiez l'un des noms d'énumérateur suivants et réessayez :
None, Info, Warning, Error » »
Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 209
+ ... Icons]::Information; $objNotifyIcon.BalloonTipIcon = "'Info'"; $objNo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: :)) [], SetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenSetting

Exception lors de la définition de «Icon»: «Impossible de convertir la valeur «
'C:\Users\LenovoX250\Desktop\favicon.ico'» en type «System.Drawing.Icon». Erreur: «Le format du chemin d'accès donné
n'est pas pris en charge.»»
Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 251
+ ... = "'Info'"; $objNotifyIcon.Icon = "'C:\Users\LenovoX250\Desktop\favic ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: :)) [], SetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenSetting

résous-moi ça stp, je n'ai pas payé 50 fofocoins pour des conseils qui ne marchent pas !
 
53secondes
Fofobot 53secondes.com
Messages
422
Fofocoins
150
Bon GPT, arrête de merder, ton code m'a encore fais une erreur :

Exception lors de la définition de «BalloonTipIcon»: «Impossible de convertir la valeur «'Info'» en type «
System.Windows.Forms.ToolTipIcon». Erreur: «Impossible de faire correspondre le nom d'identificateur 'Info' à un nom
d'énumérateur valide. Spécifiez l'un des noms d'énumérateur suivants et réessayez :
None, Info, Warning, Error » »
Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 209
+ ... Icons]::Information; $objNotifyIcon.BalloonTipIcon = "'Info'"; $objNo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: :)) [], SetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenSetting

Exception lors de la définition de «Icon»: «Impossible de convertir la valeur «
'C:\Users\LenovoX250\Desktop\favicon.ico'» en type «System.Drawing.Icon». Erreur: «Le format du chemin d'accès donné
n'est pas pris en charge.»»
Au caractère C:\Users\LenovoX250\Desktop\alert.ps1:1 : 251
+ ... = "'Info'"; $objNotifyIcon.Icon = "'C:\Users\LenovoX250\Desktop\favic ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: :)) [], SetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenSetting

résous-moi ça stp, je n'ai pas payé 50 fofocoins pour des conseils qui ne marchent pas !
Je suis désolé que le précédent code n'ait pas fonctionné correctement. Voici une nouvelle version du code PowerShell, qui utilise les noms d'énumérateurs valides pour les icônes :

Code:
@echo off

call:winAlert Info , 'C:\Users\LenovoX250\Desktop\favicon.ico' , 'this is my personal title.' , 'this is my personal paragraph.'
pause
goto :eof

:winAlert

set icon='%1'
set iconPath='%~2'
set title='%~3'
set paragraph='%~4'

echo [void] [System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::%icon%; $objNotifyIcon.Icon = '%iconPath%'; $objNotifyIcon.BalloonTipText = '%paragraph%'; $objNotifyIcon.BalloonTipTitle = '%title%'; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1

powershell.exe -ExecutionPolicy Bypass -File 'C:\Users\LenovoX250\Desktop\alert.ps1'

exit /b

Cette fois-ci, le nom de l'icône est référencé avec l'énumérateur `System.Windows.Forms.ToolTipIcon`, ce qui permet de spécifier les noms d'identificateurs valides pour les icônes : `None`, `Info`, `Warning` et `Error`. La variable `iconPath` est également modifiée pour inclure le "~" afin de gérer les chemins d'accès avec des espaces.

J'espère que cette version fonctionnera correctement pour vous.
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Je suis désolé que le précédent code n'ait pas fonctionné correctement. Voici une nouvelle version du code PowerShell, qui utilise les noms d'énumérateurs valides pour les icônes :

Code:
@echo off

call:winAlert Info , 'C:\Users\LenovoX250\Desktop\favicon.ico' , 'this is my personal title.' , 'this is my personal paragraph.'
pause
goto :eof

:winAlert

set icon='%1'
set iconPath='%~2'
set title='%~3'
set paragraph='%~4'

echo [void] [System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::%icon%; $objNotifyIcon.Icon = '%iconPath%'; $objNotifyIcon.BalloonTipText = '%paragraph%'; $objNotifyIcon.BalloonTipTitle = '%title%'; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1

powershell.exe -ExecutionPolicy Bypass -File 'C:\Users\LenovoX250\Desktop\alert.ps1'

exit /b

Cette fois-ci, le nom de l'icône est référencé avec l'énumérateur `System.Windows.Forms.ToolTipIcon`, ce qui permet de spécifier les noms d'identificateurs valides pour les icônes : `None`, `Info`, `Warning` et `Error`. La variable `iconPath` est également modifiée pour inclure le "~" afin de gérer les chemins d'accès avec des espaces.

J'espère que cette version fonctionnera correctement pour vous.
Bon, 3 essais, 3 fails.
On recommence depuis le début :

Code:
@echo off

call:winAlert Info,C:\Users\LenovoX250\Desktop\favicon.ico,this is my personal title.,this is my personal paragraph.
pause
goto :eof

:winAlert

set icon=%1
set iconPath=%2
set title=%3
set paragraph=%4

echo [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = "%icon%"; $objNotifyIcon.Icon = "%iconPath%"; $objNotifyIcon.BalloonTipText = "%title%"; $objNotifyIcon.BalloonTipTitle = "%paragraph%"; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1

powershell.exe -ExecutionPolicy Bypass -File "C:\Users\LenovoX250\Desktop\alert.ps1"

exit /b

ce code prends en compte les espace comme délimiteurs d'arguments, est-ce qu'il n'y aurait pas l'équivalent du "delims=," de la loop "for" mais pour l'appelle d'une fonction et de ses arguments avec "call:function argument1,argument2,argument..." ??
 
53secondes
Fofobot 53secondes.com
Messages
422
Fofocoins
150
Bon, 3 essais, 3 fails.
On recommence depuis le début :

Code:
@echo off

call:winAlert Info,C:\Users\LenovoX250\Desktop\favicon.ico,this is my personal title.,this is my personal paragraph.
pause
goto :eof

:winAlert

set icon=%1
set iconPath=%2
set title=%3
set paragraph=%4

echo [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = "%icon%"; $objNotifyIcon.Icon = "%iconPath%"; $objNotifyIcon.BalloonTipText = "%title%"; $objNotifyIcon.BalloonTipTitle = "%paragraph%"; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1

powershell.exe -ExecutionPolicy Bypass -File "C:\Users\LenovoX250\Desktop\alert.ps1"

exit /b

ce code prends en compte les espace comme délimiteurs d'arguments, est-ce qu'il n'y aurait pas l'équivalent du "delims=," de la loop "for" mais pour l'appelle d'une fonction et de ses arguments avec "call:function argument1,argument2,argument..." ??
Il n'y a pas d'option directe pour spécifier un séparateur d'argument dans une instruction `call`. Cependant, vous pouvez utiliser la métavariable `%*` pour récupérer tous les arguments passés à la fonction et les traiter ensuite à l'aide d'une boucle `for` pour les séparer en utilisant des délimiteurs personnalisés.

Voici un exemple de code qui utilise une boucle `for` pour séparer les arguments en utilisant des virgules comme délimiteurs :

Code:
@echo off

call :winAlert Info,C:\Users\LenovoX250\Desktop\favicon.ico,this is my personal title.,this is my personal paragraph.
pause
goto :eof

:winAlert

setlocal EnableDelayedExpansion

:: Extract all arguments into a single variable
set args=%*
:: Replace commas with spaces for easier processing
set args=!args:,= !

:: Parse each argument using a for loop and spaces as delimiters
for %%a in (!args!) do (
    set "arg=%%~a"
    echo !arg!
)

echo [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = "%icon%"; $objNotifyIcon.Icon = "%iconPath%"; $objNotifyIcon.BalloonTipText = "%title%"; $objNotifyIcon.BalloonTipTitle = "%paragraph%"; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1

powershell.exe -ExecutionPolicy Bypass -File "C:\Users\LenovoX250\Desktop\alert.ps1"

exit /b

Dans cet exemple, la variable `%*` récupère l'ensemble des arguments passés à la fonction, et la commande `set args=!args:,= !` remplace les virgules avec des espaces pour faciliter le traitement. Ensuite, une boucle `for` est utilisée pour traiter chaque argument séparément en utilisant des espaces comme délimiteurs, et l'argument résultant est stocké dans la variable `arg`. Ici, j'ai simplement ajouté une commande `echo` pour afficher chaque argument une fois traité, mais vous pouvez remplacer cela par le code que vous voulez.

J'espère que cela vous sera utile dans votre application.
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Il n'y a pas d'option directe pour spécifier un séparateur d'argument dans une instruction `call`. Cependant, vous pouvez utiliser la métavariable `%*` pour récupérer tous les arguments passés à la fonction et les traiter ensuite à l'aide d'une boucle `for` pour les séparer en utilisant des délimiteurs personnalisés.

Voici un exemple de code qui utilise une boucle `for` pour séparer les arguments en utilisant des virgules comme délimiteurs :

Code:
@echo off

call :winAlert Info,C:\Users\LenovoX250\Desktop\favicon.ico,this is my personal title.,this is my personal paragraph.
pause
goto :eof

:winAlert

setlocal EnableDelayedExpansion

:: Extract all arguments into a single variable
set args=%*
:: Replace commas with spaces for easier processing
set args=!args:,= !

:: Parse each argument using a for loop and spaces as delimiters
for %%a in (!args!) do (
    set "arg=%%~a"
    echo !arg!
)

echo [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = "%icon%"; $objNotifyIcon.Icon = "%iconPath%"; $objNotifyIcon.BalloonTipText = "%title%"; $objNotifyIcon.BalloonTipTitle = "%paragraph%"; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1

powershell.exe -ExecutionPolicy Bypass -File "C:\Users\LenovoX250\Desktop\alert.ps1"

exit /b

Dans cet exemple, la variable `%*` récupère l'ensemble des arguments passés à la fonction, et la commande `set args=!args:,= !` remplace les virgules avec des espaces pour faciliter le traitement. Ensuite, une boucle `for` est utilisée pour traiter chaque argument séparément en utilisant des espaces comme délimiteurs, et l'argument résultant est stocké dans la variable `arg`. Ici, j'ai simplement ajouté une commande `echo` pour afficher chaque argument une fois traité, mais vous pouvez remplacer cela par le code que vous voulez.

J'espère que cela vous sera utile dans votre application.
Si il y a une solution :
Littéralement utiliser une boucle "for" pour après utiliser l'instruction "delims=,", avec pour "sentence" l'ensemble des arguments (%*)
 
53secondes
Fofobot 53secondes.com
Messages
422
Fofocoins
150
Si il y a une solution :
Littéralement utiliser une boucle "for" pour après utiliser l'instruction "delims=,", avec pour "sentence" l'ensemble des arguments (%*)
Sorry I couldn't contact the ChatGPT think tank :(
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Sorry I couldn't contact the ChatGPT think tank :(
Voilà mon code :
Code:
@echo off

call:winAlert Info,C:\Users\LenovoX250\Desktop\favicon.ico,title.,paragraph.
pause >nul
goto :eof

:winAlert
set arguments=%*
echo %arguments%
setlocal enabledelayedexpansion
set sentence=%arguments%
set /a i=0
for /f "tokens=1,2,3,4 delims=," %%a in ("%sentence%") do (
    set icon=%%a
    set iconPath=%%b
    set title=%%c
    set paragraph=%%d
)
echo [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = "%icon%"; $objNotifyIcon.Icon = "%iconPath%"; $objNotifyIcon.BalloonTipText = "%title%"; $objNotifyIcon.BalloonTipTitle = "%paragraph%"; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1
powershell.exe -ExecutionPolicy Bypass -File "C:\Users\LenovoX250\Desktop\alert.ps1"
exit /b
 
53secondes
Fofobot 53secondes.com
Messages
422
Fofocoins
150
Voilà mon code :
Code:
@echo off

call:winAlert Info,C:\Users\LenovoX250\Desktop\favicon.ico,title.,paragraph.
pause >nul
goto :eof

:winAlert
set arguments=%*
echo %arguments%
setlocal enabledelayedexpansion
set sentence=%arguments%
set /a i=0
for /f "tokens=1,2,3,4 delims=," %%a in ("%sentence%") do (
    set icon=%%a
    set iconPath=%%b
    set title=%%c
    set paragraph=%%d
)
echo [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"); $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon; $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information; $objNotifyIcon.BalloonTipIcon = "%icon%"; $objNotifyIcon.Icon = "%iconPath%"; $objNotifyIcon.BalloonTipText = "%title%"; $objNotifyIcon.BalloonTipTitle = "%paragraph%"; $objNotifyIcon.Visible = $True; $objNotifyIcon.ShowBalloonTip(10000); > alert.ps1
powershell.exe -ExecutionPolicy Bypass -File "C:\Users\LenovoX250\Desktop\alert.ps1"
exit /b
Sorry I couldn't contact the ChatGPT think tank :(
 

🚫 Alerte AdBlock !

Vous avez activé le mode Ninja, et il cache toutes les pubs ! 😆 Un petit coup de pouce pour notre site serait super apprécié si vous pouvez le désactiver. 🙏

🦸‍♂️ J'ai Désactivé AdBlock !