Quelqu'un peut-il aider avec efficace et sûr moyen de l'éliminer, des citations de lot variables?
J'ai écrit un fichier de commandes qui réussit à l'importer une liste de paramètres %1, %2, %3, etc. et les place dans les variables nommées. Certains de ces paramètres contiennent plusieurs mots, et à cet effet, sont entourées de guillemets doubles.
> "Susie Jo" (%1)
> "Smith Barnes" (%2)
> "123 E. Main St." (%3)
Ces %variables sont ensuite placées dans des variables nommées:
> set FirstName=%1
> set LastName=%2
> set ShipAddr=%3
la vérification des variables se fait par echo.
echo.%FirstName%
echo.%LastName%
echo.%ShipAddr%
affichage des résultats comme
"Susie Jo"
"Smith Barnes"
"123 E. Main St."
J'ai besoin d'éliminer les comprennent des citations sur les variables sélectionnées. Par exemple, le Prénom et le Nom sont utilisés ailleurs et ne doit pas inclure les guillemets.
Dans un test fichier de commandes, j'ai réussi à éliminer les devis en utilisant le ~tilde dans des variables.
> set FirstName=%~1
> set LastName=%~2
Je pensais que j'avais la solution, mais j'ai vite connu un comportement inhabituel avec l'exécution de fichiers par lots. Soudain, CMD est pas reconnaissant long chemin relevés. Normal d'exécution du fichier de commandes à partir du chemin d'accès complet
> C:\Documents and Settings\Administrator\My Documents\Txt\batchtest\dataout.bat
retourne
> 'C:\Documents' is not recognized as an internal or external command....
Donc, il semblerait que l'ajout de la ~tilde à l'entrée %1 %2...%n variables a causé un peu de changement. Peut-être certaines variables d'environnement ont été modifiés?
J'ai aussi essayé de compensation des citations de l'intérieur variable avec diverses tentatives à l'aide de la commande FOR. Qui semble maladroit et j'ai été incapable d'apprendre comment accomplir cela par la création d'une liste de variable pour effectuer la tâche:
quelque chose comme ceci:
for %%g in (%FirstName% %LastName%) do (
set %%g=%%~g
set %%h=%%~h
set FirstName=%%~g
set LastName=%%h
echo.%FirstName% %LastName%
)
Je pense que j'ai deux questions.
1) Ma "short and sweet" l'idée de l'insertion ~tilde dans le entrantes %1 %2 variables (%~1, etc) semble avoir affecté certains paramètres et modifié la façon dont CMD navigue long des chemins d'accès.
2) je suis toujours à la recherche d'un moyen propre à éliminer les citations de sélectionné les variables nommées.
Toute l'aide pour les plus expérimentés seraient appréciés. Je suis à la fin de mes compétences ici... besoin de conseils s'il vous plaît!
edit 12/26/2009 13:36 PST ensemble de fichier batch:
Blockquote
:: dataout.chauve-souris
:: révision 12/25/2009 ajouter ~tilde à la réception d' %variables à éliminer intégré "entre guillemets.
:: écrit à la liste d'adresses à l'aide de paramètres de ligne de commande
:: écrit les données de sortie de liste pour QBooks IIF importation
:: écrit Marchand de données de Commande pour RUI
:: exemple de chaîne de ligne de commande pour tester
:: listmail[prénom][nom] [adresse"chaîne de caractères"]["ville"chaîne][etat][code postal][No][PurchDate][Regname]["Prénom Nom"][TransactionID][PaymentMethod][Total][Id_produit][Qty][Price_Each][PackPrep] [Expédition] [CommissionPmt] [no de Facture]
:: exemple: dataout Bellewinkle l'Orignal "123 le Vert de la Forêt Chemin", "Vancouver" WA 98664 1004968 05/25/2009 "Bellewinkle l'Orignal" "Olive Oyl" 101738 "Sur le Compte" 20.67 FK-1P 1 8.95 3.00 1.39 239
@echo off
cls
c:
cd\
cd documents and settings\administrateur\mes documents\txt\batchtest
echo de traitement %1 %2
:VARISET
:: Convertir %n paramètres de ligne de commande pour les variables de chaîne
set ($Prenom)=%~1
set ($Nom)=%~2
set ($BillingAddress1)=%~3
set ($BillingCity)=%~4
set ($BillingState)=%~5
set ($BillingPostal)=%~6
set ($OrderNumber)=%~7
set ($Purch_Date)=%~8
set ($RegistrationName)=%~9
maj
set ($TransactionID)=%~9
maj
set ($PaymentMethod)=%~9
maj
set ($Total)=%~9
maj set ($ProductIdentifier)=%~9
maj
set ($Quantite)=%~9
maj
set ($Price_Each)=%~9
maj
set ($Pack_Prep)=%~9
maj
set ($frais d'Expédition)=%~9
maj
set ($ServiceFee)=%~9
maj
set ($de Rabais)=%~9
maj
set ($Facture)=%~9
maj
set ($prix unitaire)=%~9
ensemble _ShipCombName=%($Prenom)% %($LastName)%
echo navire de liste déroulante nom est %_ShipCombName%
pause
:: écrire chaîne varibables à logfile
echo FN %($Prenom)% LN %($LastName)% BA %($BillingAddress1)% %($BillingCity)% %($BillingState)% %($BillingPostal)% %($OrderNumber)% %($Purch_Date)% %($RegistrationName)% %($TransactionID)% %($PaymentMethod)% %($Total)% %($ProductIdentifier)% %(Quantité de$)% %($Price_Each)% %($Pack_Prep)% %($Frais d'expédition)% %($ServiceFee)% %($de Rabais)% %($Facture)% %($prix unitaire)% %_ShipCombName% >> d_out_log.txt
:: Attribuer Compte par le Fournisseur de Service
IF /i %($PaymentMethod)%==Amazon Créances ENSEMBLE _QBAcct=Amazon.com
:: 12-25-2009 ajouté deuxième Amazon pm pas de méthode pour plus de polyvalence
IF /i %($PaymentMethod)%==Amazon JEU _QBAcct=Amazon.com
IF /i %($PaymentMethod)%==MÂT ENSEMBLE _QBAcct=Auth/Net
IF /i %($PaymentMethod)%==MasterCard ENSEMBLE _QBAcct=Auth/Net
IF /i %($PaymentMethod)%==Visa ENSEMBLE _QBAcct=Auth/Net
IF /i %($PaymentMethod)%==établies PayPal _QBAcct=PayPalPmts
IF /i %($PaymentMethod)%==Sur le Compte _QBAcct=%($RegistrationName)%
IF /i %($PaymentMethod)%==Mail ENSEMBLE _QBAcct=%($RegistrationName)%
IF /i %($PaymentMethod)%==AMER ENSEMBLE _QBAcct=Auth/Net
IF /i %($PaymentMethod)%==DISC SET _QBAcct=Auth/Net
:: Attribuer Rep désignation fondée sur QBAccount
IF /i %($PaymentMethod)%==Amazon Créances ENSEMBLE _Rep=Amazon
:: 12-25-2009 ajouté deuxième Amazon pm pas de méthode pour plus de polyvalence
IF /i %($PaymentMethod)%==Amazon JEU _Rep=Amazon
IF /i %($PaymentMethod)%==MÂT ENSEMBLE _Rep=BlueZap
IF /i %($PaymentMethod)%==MasterCard ENSEMBLE _Rep=BlueZap
IF /i %($PaymentMethod)%==Visa ENSEMBLE _Rep=BlueZap
IF /i %($PaymentMethod)%==établies PayPal _Rep=BlueZap
IF /i %($PaymentMethod)%==Sur le Compte _Rep=R B
IF /i %($PaymentMethod)%==Mail ENSEMBLE _Rep=R B
IF /i %($PaymentMethod)%==AMER ENSEMBLE _Rep=BlueZap
IF /i %($PaymentMethod)%==DISC SET _Rep=BlueZap
:: check pour dupliquer les données d'adresse
findstr /i /s "%_ShipCombName%" addrlist.txt
echo errorlevel: %errorlevel%
if errorlevel 1 goto :ADDRWRITE
si errorlevel 0 goto :ADDRFOUND
:ADDRWRITE
echo %_ShipCombName% >> addrlist.txt
echo %($BillingAddress1)% >> addrlist.txt
echo %($BillingCity)% %($BillingState)% %($BillingPostal)% >> addrlist.txt
l'écho. >> addrlist.txt
echo Fichier d'Adresses Écrit
:ADDRFOUND
echo sélectionné rep est %_Rep%
echo compte sélectionné est: %_QBAcct%
pause
:: RUI OUT
:: write Marchand Ordre d'ID & RUI numéro de Commande à RUI
:: vérification des doublons RUI données dans writeRUI.txt
cd..
cd RegKOut
find /i "%($OrderNumber)%" writeRUI.txt
echo errorlevel: %errorlevel%
if errorlevel 1 goto :RUIWRITE
si errorlevel 0 goto :IIFWRITE
:RUIWRITE
echo %($Facture)% %($OrderNumber)% >> writeRUI.txt
:: fin d'écriture RUI
:: IIF OUT
:IIFWRITE
:: Check pour dupliquer les données de facturation dans writeIIF.txt
find /i "%($OrderNumber)%" writeIIF.txt
echo errorlevel: %errorlevel%
if errorlevel 1 goto :HEADWRITE
si errorlevel 0 goto :LINEWRITE
:HEADWRITE
:: write-Tête, Navire/de Manutention, d'actualisation, Rep & données de la commission de QB IIF fichier d'importation
echo %($OrderNumber)% %($Purch_Date)% de la Facture %($TransactionID)% %_QBAcct% des Comptes Débiteurs %($Total)% %_Rep% >> writeIIF.txt
echo H/P %($Pack_Prep)% 1 ? >> writeIIF.txt
echo SHP %($frais d'Expédition)% 1 ? >> writeIIF.txt
echo DISQUE %($de Rabais)% 1 ? >> writeIIF.txt
echo Comm %($ServiceFee)% 1 ? >> writeIIF.txt
:LINEWRITE
IF /i %($ProductIdentifier)% equ PH-1 goto WRITE_DEFA ELSE goto WRITE_DISC
echo %($ProductIdentifier)%
:WRITE_DISC
::les écritures des prix remisé analysés à partir de la variable personnalisée:
echo %($ProductIdentifier)% %($Price_Each)% %(Quantité de$)% ? >> writeIIF.txt
goto :EOF
:WRITE_DEFA
:écrit par défaut de prix analysés à partir de données du Produit
echo %($ProductIdentifier)% %($prix unitaire)% %(Quantité de$)% ? >> writeIIF.txt
goto :EOF
:: 3 secondes de retard
:: TYPE NUL | CHOICE.COM /N /CY /TY,3 >NUL
:EOF